1. 程式人生 > >addEventListener()與removeEventListener()

addEventListener()與removeEventListener()

所有的DOM節點中都包含addEventListener()與removeEventListener()這兩種方法,用於追加事件和刪除追加。

接受引數:要處理的事件名、作為事件處理程式的函式和一個布林值。 (3個)

最後這個布林值引數是true,表示在捕獲階段呼叫事件處理程式;如果是false,表示在冒泡階段呼叫事件處理程式。預設為false;

假如在一個按鈕上新增一個點選事件,程式碼如下:

var btn = document.getElementById("myBtn");
btn.addEventListener("click", function () {
    alert(this.id);
}, false);

使用DOM2級方法新增事件處理程式的主要好處是可以新增多個事件處理程式。來看下面的例子:

var btn = document.getElementById("myBtn");
btn.addEventListener("click", function () {
    alert(this.id);
}, false);
btn.addEventListener("click", function () {
    alert("Hello World");
}, false);

通過addEventListener()新增的事件處理程式只能使用removeEventListener()來移除;移除時傳入的引數與新增處理程式時使用的引數相同

通過addEventListener()新增的匿名函式無法移除,如下面的例子所示:

var btn = document.getElementById("myBtn");
btn.addEventListener("click", function () {
    alert(this.id);
}, false);
btn.removeEventListener("click", function () {  //無效!
    alert(this.id);
}, false);

在這個例子中,removeEventListener無法刪除addEventListener所追加的事件,因為兩個方法並不相等,記憶體地址已經是不同的

,如下面的例子所示:

 var btn = document.getElementById("myBtn");
 var handler = function () {
         alert(this.id);
     };
 btn.addEventListener("click", handler, false);
 btn.removeEventListener("click", handler, false);  //有效!