JQuery .unbind (), метод только работает над созданными событиями jQuery?

Я пытаюсь развязать все обработчики событий для всех элементов, которые являются в конкретном контейнере. Как DIV. Но те события связывались/регистрировались, не используя jQuery. Некоторые связываются ручной путь с onclick="...." или использование регулярного собственного JavaScript.

Но когда я делаю что-то вроде этого

$('#TheDivContainer').find('div,td,tr,tbody,table').unbind();

Это, кажется, не работает. Который приводит меня полагать, что .unbind () только работает, если события были первоначально связаны jQuery.

Это верно? Есть ли другой способ развязать все события от группы элементов?

Спасибо!

7
задан 7wp 14 June 2010 в 16:29
поделиться

3 ответа

Вы правы. Как и в API:

Любой обработчик, который был присоединен с помощью .bind(), может быть удален с помощью .unbind().

7
ответ дан 6 December 2019 в 19:33
поделиться

Unbind будет работать только с событиями, созданными jQuery, поскольку все методы, которые это делают (addEventListener и attachEvent), требуют как узел, так и имя события, и обработчик в качестве аргумент. bind позаботится об их хранении.

Кстати, список событий в стиле DOM0 ( .foo = function (...) может быть удален только путем установки то же свойство с чем-то еще, например null .

3
ответ дан 6 December 2019 в 19:33
поделиться

Вы всегда можете сделать это:

$('#TheDivContainer').find('div,td,tr,tbody,table')
  .unbind('click')
  .attr('onclick', ''); // edited to change null to ''

и т. Д. для всех подходящих типов событий.

3
ответ дан 6 December 2019 в 19:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: