我不知道我在做什麼錯,但這裏是我正在做的一個例子,它似乎並沒有工作。removeEventListener不起作用
someDom.addEventListener('mousemove',function(ev) {self.onInputMove(ev)},false);
someDom.removeEventListener('mousemove',self.onInputMove);
的removeEventListener代碼被執行,但它只是不刪除「鼠標移動」聽者
我不知道我在做什麼錯,但這裏是我正在做的一個例子,它似乎並沒有工作。removeEventListener不起作用
someDom.addEventListener('mousemove',function(ev) {self.onInputMove(ev)},false);
someDom.removeEventListener('mousemove',self.onInputMove);
的removeEventListener代碼被執行,但它只是不刪除「鼠標移動」聽者
onInputMove
是不是一個事件 - 回調方法。所以,你需要做的是這樣的:
var event = function(ev) {self.onInputMove(ev)};
someDom.addEventListener('mousemove', event,false);
someDom.removeEventListener('mousemove', event, false);
removeEventListener
刪除偵聽器正是添加的功能相匹配。
在這種情況下,addEventListener
添加的功能是:
var some_func = function(ev) {
self.onInputMove(ev);
};
商店的實際功能的引用,你會好。因此,例如,下面應該工作:
someDom.addEventListener('mousemove',self.onInputMove,false);
someDom.removeEventListener('mousemove',self.onInputMove,false);
removeEventListener的第三個參數也是必須的,所以你的實例應該是:'someDom.removeEventListener('mousemove',self.onInputMove,false);' – meouw 2011-04-28 22:29:11
@meouw - 更新以解決該問題;謝謝! – 2011-04-28 22:38:20
我知道我晚了幾年,但第三個參數實際上並不是強制的嗎?我認爲它應該是可選的,它應該默認爲false。 – 2016-12-02 18:13:56
爲什麼不自己做起來很辛苦,只是使用下面的一個事件綁定到一個元素:
element.onmousemove = function(e) {
// Some code here...
alert("Mouse moved!");
};
現在,當你要刪除的事件,只是這樣做:
element.onmousemove = null;
完成!
希望這可以幫助你們出去!
這應該被標記爲答案。祝你好樣的先生。你剛剛救了我。 – thandasoru 2013-02-26 03:30:23
@thandasoru如果您使用的是事件偵聽器,則不需要。 – Sir 2013-11-04 01:59:48
因爲這使用舊的事件處理程序作爲屬性範例,而不是DOM Level 2事件標準。而且,因爲這種技術不允許多個處理程序來處理單個事件。 – 2016-03-11 19:29:13
本頁面首先在Google上搜索此問題。因此,除了已經提到的答案之外,這裏還有一個對未來有趣的事實:
將addCaptureListener()中的第三個可選變量留給useCapture/useBubble(因爲它默認爲false)會在刪除相同的eventlistener時產生一些問題具有相同的回調名稱。在使用chrome時我遇到了這個問題。不能說其他瀏覽器。
所以請明確提到第三個變量爲「false」。
removeEventListener的第三個參數也是強制性的,所以你的實例應該是:'someDom.removeEventListener('mousemove',event,false);' – meouw 2011-04-28 22:28:16
@meouw Yup,也進行了更新。謝謝。 – cem 2011-04-29 00:17:51
'事件'不是你的eventhandler函數的一個好名字參考 – UpTheCreek 2012-11-29 11:57:04