document.removeEventListener() trong Javascript

Phương thức removeEventListener() sẽ xóa bỏ một sự kiện đã được gán vào bởi phương thức document.addEventListener().

Để có thể xóa sự kiện, hàm xử lý sự kiện được truyền vào phương thức document.addEventListener() phải được định nghĩa ở bên ngoài phương thức document.addEventListener(). Nói cách khác, nếu hàm xử lý sự kiện truyền vào phương thức document.addEventListener() là một hàm vô danh(Anonymous functions có dạng document.removeEventListener("event", function(){ myScript }); ), phương thức removeEventListener() sẽ không thể xóa sự kiện( Tìm hiểu kỹ hơn ở phần cách sử dụng).

Nếu muốn thêm/xóa sự kiện cho một phần tử xác định, sử dụng phương thức element.addEventListener()element.removeEventListener().

Cú pháp

Cú pháp: document.removeEventListener(event, function, useCapture)

Trong đó:

  • event là một chuỗi đại diện cho sự kiện và không sử dụng tiền tố on. Ví dụ onclick thành click.
  • function là function sẽ bị loại bỏ.
  • useCapture là tham số không bắt buộc, xác định event phase được sử dụng để loại bỏ sự kiện:
    • Nếu mang giá trị true, sự kiện sẽ bị loại bỏ theo kiểu capturing phase.
    • Nếu mang giá trị false, sự kiện sẽ bị loại bỏ theo kiểu bubbling phase.

Cách sử dụng

Xóa bỏ hàm xử lý sự kiện mousemove của trang:

Code RUN
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <style type="text/css">
            #result{
                color: red;
                font-size: 20px;
                font-weight: bold;
            }
        </style>
    <body>
        <h1>Học lập trình miễn phí tại freetuts.net</h1>   
        <p id="result"></p>
        <button onclick="removeHandler()">Remove event</button>
        <script>
            document.addEventListener("mousemove", myFunction);
            function myFunction() {
                document.getElementById("result").innerHTML = Math.random();
            }

            function removeHandler() {
                document.removeEventListener("mousemove", myFunction);
            }
        </script>
    </body>
</html>

Hãy thử thay myFuntion() bằng một hàm ẩn danh và xem kết quả:

Code RUN
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <style type="text/css">
            #result{
                color: red;
                font-size: 20px;
                font-weight: bold;
            }
        </style>
    <body>
        <h1>Học lập trình miễn phí tại freetuts.net</h1>   
        <p id="result"></p>
        <button onclick="removeHandler()">Remove event</button>
        <script>
            document.addEventListener("mousemove", function() {
                document.getElementById("result").innerHTML = Math.random();
            });

            function removeHandler() {
                document.removeEventListener("mousemove", myFunction);
            }
        </script>
    </body>
</html>

Sau khi click button, sự kiện mousemove vẫn không bị loại bỏ, đúng với lưu ý mình đã để cập ở trên.

Tham khảo: w3schools.com

Các loại function khác

Nguồn: freetuts.net