2014-04-10 93 views
0

是否有可能删除对象上的所有事件侦听器,即使是那些在外部声明的事件侦听器,我在http://jsfiddle.net/E5n7g上有以下代码。删除DOM对象上的所有事件侦听器

我用的是内置的

addEventListener() 

对“标签”添加事件,然后我尝试使用jQuery删除此,但它似乎jQuery的只能解除绑定事件其本身的约束。

我问这个问题的原因是因为我试图将jQuery与使用Dojo的产品结合使用。当我绑定“click”事件时,它被添加到事件处理程序列表中,但是每当我单击该链接时,它都会删除该事件处理程序,并且只会使Dojo完好无损。

回答

1

我发现我使用的一种方法(并且工作得相当好)是cloneNode函数。

var new_el = el.cloneNode(true); //true means a deep copy 
el.parentNode.replaceChild(new_el,el); 

当您克隆元素时,它不克隆任何事件。

+0

将preventDefault(),stopPropagation()和unbind()将适用于此要求? – Jesse

+0

@ jesse好,防止事件会阻止它,但它不会解除它。解绑只能用于jQuery附加的绑定事件,而不是DOM事件。 –

+0

是的,我看到,removeEventListener可以清除事件listen,并且该参数必须与addEventListener相似。 **网址:** http://jsfiddle.net/E5n7g/2/ – Jesse

相关问题