1

我正在尝试删除我的input元素的事件。

我有以下

//add mouse up event on all element under mainDiv
addEvent('mainDiv', 'onmouseup', mouseUpFun);

//search all the input elements and remove the mouse up event 
inputs = document.getElementsByTagName('input');
    for(var i; i < inputs.length; i++){
      var input = inputs[i];
       input.removeEventListener('onmouseup');
    }

上面的代码不起作用,并且仍然onmouseup附加了事件。

谁能帮我解决这个问题?非常感谢!

4

2 回答 2

3

嗯,一个原因可能是你的循环永远不会运行。您需要i在循环中初始化:

for(var i = 0; i < inputs.length; i++){
   var input = inputs[i];
   input.removeEventListener('onmouseup');
}

i否则,由于初始值为 ,此循环将永远不会运行undefined

您的呼叫removeEventListener也不会按预期工作。您还需要提供对您使用的侦听器/处理程序的引用。

请参阅此处了解removeEventListener.

如果一切都在使用mouseUpFun,您可以将其提供给removeEventListener

input.removeEventListener('onmouseup', mouseUpFun);
于 2013-07-12T23:16:47.567 回答
0

请参阅https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.removeEventListener

使用 时removeEventListener,需要引用要删除的侦听器函数。

然后,您可以:

  • 使用您的addEvent函数,您可以保存您添加的侦听器的引用

或者

  • 您可以克隆元素并将其替换为克隆。这样,您将删除所有事件侦听器(包括其子事件侦听器)。
于 2013-07-12T23:20:28.753 回答