Присоединение событий JQuery к элементам управления «на лету» - PullRequest
1 голос
/ 24 сентября 2011

Я добавляю существующий div на моей странице. Добавленный текст содержит HTML-код в строке. Проблема в том, что события не работают, когда я добавляю клик на них после добавления на страницу. Я думаю, Jquery загружает контроль над загрузкой страницы, и мне нужно что-то предпринять, чтобы снова атаковать события.

Ответы [ 2 ]

5 голосов
/ 24 сентября 2011

Попробуйте использовать .live() или .delegate для этой цели.

2 голосов
/ 24 сентября 2011

Вы пропали без вести delegate().

Так что, если вы запустите

$('#workingArea a.doAction').bind('click', function(){
    // do stuff
});

или эквивалент

$('#workingArea a.doAction').click(function(){
    // do stuff
});

Любые a загруженные после этого запуска не получают событие.

Если вместо этого вы делаете

$('#workingArea').delegate('a.doAction', 'click', function(){
    // do stuff
});

тогда эти события будут записываться для всех и всех будущих элементов a.doAction, которые будут добавлены, если существует #workingArea, когда он выполняется.

...