События Jquery не работают после ajax / innerHtml - PullRequest
2 голосов
/ 10 марта 2010

У меня есть много событий, таких как

$('.hidefile').click(function (event) {

При загрузке страницы и при определенных условиях я использую ajax, чтобы получить HTML для определенного div и заполнить его .html (htmlstring). Это заняло у меня навсегда, но я заметил, что события не работают, когда я делаю это. Как мне заполнить div html и заставить работать с ним события jquery?

Ответы [ 2 ]

13 голосов
/ 10 марта 2010

Свяжите события щелчка (или иным образом) со своими элементами, используя live:

$('.hidefile').live("click", function (event) {...

Когда вы заменяете элементы с помощью ajax, они теряют свои обработчики событий. Вы можете либо явно привязать их к обратному вызову success конкретного ajax-метода, который вы использовали для замены этих элементов, либо использовать вместо этого обработчики live , которые будут:

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

0 голосов
/ 10 марта 2010

Как вы прикрепляете событие клика. Вы должны сделать это внутри события document.ready, чтобы убедиться, что DOM загружен. Также, как предлагает karim79, вы должны использовать функцию live, чтобы убедиться, что события продолжаются.

...