позднее связывание jQuery

у меня есть код, что bind's по щелчку действие с загрузкой страницы, это - ссылка. Когда я нажимающий его, он отправляет ajax запрос, и содержание замены в некотором отделении с jQuery добавляют () функцию. Это новое содержание имеет ссылки, и я должен связать некоторое действие для них, но меня could't.. свяжите не работал, я думаю, потому что jQuery добавляет, не обновляет дерево DOM. Как я мог получить позднее связывание?

10
задан andymcgregor 14 December 2009 в 18:46
поделиться

3 ответа

Позднее связывание теперь доступно с использованием события jQuery live ():

$('a.my-links-class').live('click', function() {
    // do your link action here
});
11
ответ дан 3 December 2019 в 14:00
поделиться

You необходимо использовать функцию jQuery live , которая будет связывать событие со всеми элементами, соответствующими селектору, независимо от того, когда они были созданы.

2
ответ дан 3 December 2019 в 14:00
поделиться

Вы можете использовать функцию $ (). Live (событие, функция) из jQuery 1.3+. $ ("a"). Live ("click", myClickFunc) свяжет myClickFunc так же, как $ ("a"). Click (myClickFunc) ​​или $ ("a"). Bind ("click", myClickFunc) , но события будут привязаны "в реальном времени", поэтому элементы, которые добавляются в DOM после вызова этой функции, также будут привязаны. Вы можете удалить живые события с помощью $ (). Die () . Для получения дополнительной информации о $ (). Live см. документацию к нему .

Другой вариант - иметь функцию для привязки элементов к определенному контексту (с использованием редко используемой функции $ selector второй параметр):

function myBindEvents(context) {
     $("a", context).click(myClickFunc);
}

и вызывайте его всякий раз, когда вы обновляете элемент с помощью AJAX:

$("<div>").load("...", "...", function(){myBindEvents(this);});

Надеюсь, это поможет. :)

2
ответ дан 3 December 2019 в 14:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: