Как удалить все события типа из элемента - PullRequest
1 голос
/ 19 января 2011

Я хочу удалить ВСЕ события щелчка от определенного элемента DOM.Как?Существует removeEventListener, но для этого требуется присоединенная функция.

Есть ли способ удалить ВСЕ присоединенные события 1 типа (или просто ВСЕ, что тоже хорошо)?

Граци

Ответы [ 4 ]

3 голосов
/ 24 октября 2012

Эта статья, вероятно, будет полезна:

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, но вы можете легко изменить его, чтобы передатьСтрока в качестве имени идентификатора элемента или как вам лучше.

2 голосов
/ 19 января 2011

К сожалению, в спецификации DOM нет метода, который мог бы перечислять или удалять прослушиватели событий, даже не зная функцию прослушивателя.

Лучшее, что вы можете сделать, - это создать новый элемент того же типа, скопироватьвсе свойства и переместить дочерние элементы из исходного элемента в новый.

0 голосов
/ 19 января 2011

Если вы хотите удалить все прослушиватели событий, как насчет назначения пустой функции для события onclick?

<YOUR_HTML_ELEMENT>.onclick=function(){};
0 голосов
/ 19 января 2011

Вы не упомянули, используете ли вы библиотеку для помощи в манипулировании DOM, но если вы используете jQuery, это так же просто, как $ (Domelement) .unbind ('click'); Документировано здесь: http://api.jquery.com/unbind/

...