2011-01-19 49 views

回答

0

你没有提到你是否使用库,以协助DOM操作,但如果你使用jQuery,它的那样简单$(一个DOMElement).unbind(“点击” ); 记录在这里:http://api.jquery.com/unbind/

+0

我没有使用框架。我会看看jQuery如何使用它并使用它=) – Rudie 2011-01-20 18:23:11

2

不幸的是,DOM规范中没有方法可以在不知道侦听器函数的情况下列出或删除事件侦听器。

您可以做的最好的做法是创建一个相同类型的新元素,复制所有属性并将子元素从原始元素移动到新元素。

+0

这似乎很多工作... – Rudie 2011-01-20 18:25:17

0

如果你想删除所有的事件监听器如何分配一个空的函数到onclick事件?

<YOUR_HTML_ELEMENT>.onclick=function(){}; 
+0

我也想过,但它实际上工作? =) – Rudie 2011-01-20 18:22:52

3

这篇文章很可能是有用的:

http://www.computerhowtoguy.com/how-to-use-the-jquery-unbind-method-on-all-child-elements/

一部分尤其是递归函数,消除所有点击事件。请记住,如果点击事件是使用jQuery创建的,jQuery将删除点击事件。文章中给出的函数将删除使用jQuery创建的那些功能和那些没有创建的功能。给出的函数是这样的:

function RecursiveUnbind($jElement) { 
    // remove this element's and all of its children's click events 
    $jElement.unbind(); 
    $jElement.removeAttr('onclick'); 
    $jElement.children().each(function() { 
     RecursiveUnbind($(this)); 
    }); 
} 

你会调用该函数是这样的:

RecursiveUnbind($('#container')); 

这个功能需要一个jQuery对象参数,但你可以很容易地改变它传递一个字符串作为名称元素的ID,或者你认为是最好的。

+0

这是一个潜在的有用的想法(虽然它被overcoded),但我不明白它是如何与问题相关的... – lonesomeday 2012-10-24 20:07:15

相关问题