簡體   English   中英

removeEventListener 不工作

[英]removeEventListener is not working

我不知道我做錯了什么,但這是我正在做的一個例子,它似乎不起作用。

someDom.addEventListener('mousemove',function(ev) {self.onInputMove(ev)},false);

someDom.removeEventListener('mousemove',self.onInputMove);

removeEventListener 代碼已執行,但它只是不刪除“mousemove”偵聽器

removeEventListener刪除與添加的 function完全匹配的偵聽器。

在這種情況下, addEventListener添加的 function 是:

var some_func = function(ev) {
    self.onInputMove(ev);
};

存儲對實際 function 的引用,你會很好的。 因此,例如,以下應該有效:

someDom.addEventListener('mousemove',self.onInputMove,false);

someDom.removeEventListener('mousemove',self.onInputMove,false);

onInputMove不是事件回調方法。 因此,您需要執行以下操作:

var event = function(ev) {self.onInputMove(ev)};
someDom.addEventListener('mousemove', event,false);

someDom.removeEventListener('mousemove', event, false);

為什么要讓自己這么難,只需使用以下將事件綁定到元素:

element.onmousemove = function(e) {
    // Some code here...
    alert("Mouse moved!");
};

現在,當您想刪除事件時,只需執行以下操作:

element.onmousemove = null;

完畢!

希望這可以幫助你們!

此頁面首先在 Google 上搜索此/此類問題。 因此,除了已經提到的答案之外,還有一個更有趣的未來事實:

在 addEventListener() 中為 useCapture/useBubble 省略第三個可選變量(因為它默認為 false)確實會在刪除具有相同回調名稱的相同事件偵聽器時產生一些問題。 我在使用 chrome 時遇到了這個問題。 不能說其他瀏覽器。

因此,請明確提及第三個變量為“假”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM