如何从元素中删除所有类型的事件

时间:2011-01-19 01:38:05

标签: javascript events dom javascript-events

我想从某个DOM元素中删除所有点击事件。怎么样?有removeEventListener,但这需要附加函数。

有没有办法删除1种类型的所有附加事件(或者只是ALL,那也很好)?

GRAZI

4 个答案:

答案 0 :(得分:3)

这篇文章可能会有用:

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

特别是一部分是一个删除所有点击事件的递归函数。请记住,如果使用jQuery创建click事件,jQuery将删除click事件。本文中给出的函数将删除使用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的名称,或者您认为最好。

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

你没有提到你是否使用库来协助DOM操作,但如果你使用的是jQuery,它就像$(domelement).unbind('click')一样简单; 记录在这里:http://api.jquery.com/unbind/

答案 3 :(得分:0)

如果要删除所有事件侦听器如何为onclick事件分配空函数?

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