[英]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.