Будет ли метод 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
});