Есть ли в JQuery способ отменить привязку событий в случайной строке HTML? - PullRequest
0 голосов
/ 18 февраля 2009

Я использую JQuery для установки HTML внутри div. Примерно так:

$(div).html(strHtmlBlob);

strHtmlBlob - это фрагмент HTML, возвращаемый через Ajax с сервера. После того, как он назначен, я настроил некоторые события для элементов в новом HTML-объекте, выполнив следующее:

$(div).find("a").click(a_ClickHandler);

Это все прекрасно работает. Проблема в удалении событий. Я хочу убедиться, что я правильно очищаю DOM.

Я удаляю HTML так:

$(div).html("");

Но я вижу, что события все еще там. Есть ли способ очистить события для элементов, которые больше не существуют?

Ответы [ 2 ]

6 голосов
/ 18 февраля 2009

Используйте .remove () вместо .html ("")

Это очистит элементы и события сразу. JQuery делает много очищающего волшебства под одеялом, если вы позволите.

2 голосов
/ 18 февраля 2009
$(div).find('a').unbind('click');

Оформить документацию .

В качестве альтернативы вам следует empty() it:

$(div).empty();

Согласно документам:

Обратите внимание, что эта функция, начиная с 1.2.2, также удалит все обработчики событий и данные из внутреннего кэша.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...