Удалить всех слушателей события JavaScript элемента и его детей? [дубликат]

21
задан Tower 11 July 2010 в 09:10
поделиться

2 ответа

Если вы используете cloneNode, слушатели событий не будут скопированы.

Если вам нужно надежное решение, то лучше всего написать обертку для присоединения/отсоединения слушателей и отслеживать их самостоятельно. Что-то вроде Dean Edwards's addEvent.

22
ответ дан 29 November 2019 в 22:05
поделиться

Я не знаю такого случая, и поиск в Google не дал никаких очевидных результатов. Одно простое, но непродуманное решение - создать функцию, которая перебирает все события и устанавливает их в null, например

function removeEvents(obj)
{
    obj.onblur = null;
    obj.onchange = null;
    obj.onclick = null;
    // ...
}

Вызовите эту функцию следующим образом: removeEvents(myElem). Полный список обработчиков событий JavaScript можно найти на http://www.elated.com/articles/events-and-event-handlers/.

Несомненно, существует более элегантный способ написать эту функцию, но я не знаю, существует ли более элегантный способ решить эту проблему. Было бы здорово, если бы кто-нибудь знал такой способ. Если вы привязываете события через библиотеку JavaScript, например jQuery, то могут быть другие, лучшие варианты.

-8
ответ дан 29 November 2019 в 22:05
поделиться
Другие вопросы по тегам:

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