Будет ли метод jquery empty() очищать прослушиватели событий, созданные с помощью не jquery-средств

У меня есть элемент с большим количеством дочерних элементов. Я хочу очистить содержимое этого элемента и заменить его новой структурой.

дочерние элементы назначаются с различными прослушивателями событий, и не все эти прослушиватели создаются с помощью метода привязки jquery.

Если я использую метод jquery empty для очистки элемента, он удалит все прослушиватели событий или очистит только слушатели, созданные с помощью метода привязки jquery?

Ответ 1

Как уже отмечалось несколькими комментаторами, в документах jQuery говорится, что empty() действительно удаляет обработчики событий: http://api.jquery.com/empty/

Возможно, это был не тот случай, когда этот вопрос был отправлен, но эта страница является первым хитом в Google.

Ответ 2

Вы можете отключить всех слушателей объекта с помощью .unbind() и оставить параметры пустыми

Если вы хотите удалить все дочерние элементы элемента. просто пользователь $( "# parent" ). children(). remove();

С помощью методов live() и die() вы можете добавлять обработчики событий к элементам, которые еще не созданы. с $( ". element" ). live ("click", function() {}) добавляет функцию ко всем объектам .Element, которые в настоящее время находятся в вашем HTML, или тем, кто добавлен в будущем.

Ответ 3

он не очистит прослушиватели событий. Но вы должны использовать этот прослушиватель событий как событие live(), потому что вы меняете DOM элементы динамически.

например:

$('a').live('click', function(){
   // your stuff
});

//jQuery 1.7 требуется для следующего фрагмента кода

$(document).on('click', 'a', function(){
   // your stuff
});