JQuery - добавленные ссылки не работают - PullRequest
1 голос
/ 26 октября 2009

Я создал скрипт выбора динамического списка, используя Jquery 1.3 и PHP, который отправляет запрос JSON AJAX и возвращает список элементов на выбор. Вызов AJAX отлично работает, возвращая массив элементов, которые я использую Jquery для добавления их в качестве неупорядоченного списка в пустой контейнер DIV. Эта часть процесса работает как ожидалось.

Проблема заключается в том, что из этого списка элементов я рисую их как ссылки, клики которых обрабатываются атрибутом rel. Вот пример:

<a rel="itemPick" id="5|2" href="#">This is the link</a>

Обработчик JQUERY выглядит так:

$('a[rel=itemPick]').click(function () { code here... });

Эти ссылки и обработчики кликов прекрасно работают при загрузке страницы, но когда они добавляются в контейнер DIV, событие click не срабатывает. Я не хочу снова обновлять всю HTML-страницу, поэтому мне нужно что-то сделать в дополнение к append (), чтобы JQUERY распознал вновь добавленные ссылки?

Ответы [ 3 ]

4 голосов
/ 26 октября 2009

Когда вы используете метод jQuery.click, он ищет все элементы "a", которые в настоящее время существуют на странице. Затем, когда вы добавляете новый элемент «a», он не знает об этом обработчике события щелчка.

Итак, в jQuery появилась новая модель событий, которая позволяет связывать функции со всеми текущими и будущими элементами, которые называются Live Events . Вы можете использовать Live Events так же, как и обычную привязку событий, но они будут работать для всех указанных будущих элементов. Таким образом, вы можете просто переключить свою логику привязки на:

$('a[rel=itemPick]').live('click', function () {
    //code here...
})
1 голос
/ 26 октября 2009
$('a[rel=itemPick]').live("click", function (){ code here... });
0 голосов
/ 26 октября 2009

Связываете ли вы событие после добавления ссылок?

...