Если вы используете cloneNode
, слушатели событий не будут скопированы.
Если вам нужно надежное решение, то лучше всего написать обертку для присоединения/отсоединения
слушателей и отслеживать их самостоятельно. Что-то вроде Dean Edwards's addEvent.
Я не знаю такого случая, и поиск в 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, то могут быть другие, лучшие варианты.