Повторный запуск селекторов и действий JQuery после программной вставки нового контента - PullRequest
2 голосов
/ 25 августа 2009

Товарищи хакеры JQuery, привет: -)

Предположим, у вас есть следующий код:

$('.links').click(function(){
    //Do something
}

И затем я вставляю динамический контент в HTML-контент DIV (скажем, например, после нажатия кнопки новый контент вставляется). Этот контент имеет класс "links". Проблема заключается в том, что кнопка «щелкнуть» не регистрируется для вновь вставленного содержимого.

Как мне сказать JQuery перевыбрать все элементы с классом "links" и применить к ним вышеописанную функцию? Может ли это быть автоматизировано?

Спасибо.

1 Ответ

10 голосов
/ 25 августа 2009

Вы хотите использовать делегирование события:

$('.links').live("click",function(){
    //Do something
});

Это предотвратит потерю обработчиком событий щелчка динамически вставленных элементов класса links. Обратите внимание, что вам также понадобится jQuery 1.3 или более поздняя версия , чтобы это работало. Смотрите События / в прямом эфире .

Другим способом является повторное связывание с использованием обратного вызова любого из методов jQuery ajax , которые вы выбрали, например:

$('#someDiv').load('page.html', function() {
    $('.links').click(function(){
        //Do something
    });
});

или еще аккуратнее:

function initLinks() {
    $('.links').click(function(){
        //Do something
    }
}

$('#someDiv').load('page.html',initLinks);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...