jQuery не видит данные, полученные AJAX запросом

R
На сайте с 18.12.2009
Offline
92
2672

Как обрабатывать данные, которые были подгружены ajax запросом jQuery?

Пример: $("a").click(function(){ ... делаем что-то, если был клик по любой ссылке

Но если кликнуть ссылку, которая была подгружена ajax запросом - jQuery не срабатывает, так как, видимо, он не знает о ней.

Как при получении данных по AJAX записывать их в память для jQuery? Спасибо

LEOnidUKG
На сайте с 25.11.2006
Offline
1726
#1

гуглите jQuery live.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
T
На сайте с 11.08.2005
Offline
181
#2

$('a').live('click', function()

{

...

});

R
На сайте с 18.12.2009
Offline
92
#3

Супер, все так просто оказывается. Спасибо, очень оперативно.

S
На сайте с 11.03.2010
Offline
29
#4

$(selector).live("click", function(){
4arger
На сайте с 17.12.2008
Offline
95
#5

лучше использовать on вместо live. С версии 1.7 метод live стал deprecated.

R
На сайте с 18.12.2009
Offline
92
#6

4arger, как быть с синтаксисом?

$(selector).on("click", function(){

не работает с ajax данными.

jQuery1.8.2

LEOnidUKG
На сайте с 25.11.2006
Offline
1726
#7
rerighter:
4arger, как быть с синтаксисом?
$(selector).on("click", function(){

не работает с ajax данными.
jQuery1.8.2

Да там какие-то свои замуты с ним.

Попробуйте:

$(document).on("click","#date", function(){ alert("Goodbye!"); });

т.е. указываем, что искать в документе, и искать #date

R
На сайте с 18.12.2009
Offline
92
#8

LEOnidUKG, спасибо, это работает

Ayavryk
На сайте с 11.10.2003
Offline
209
#9
Timen:
$('a').live('click', function(){});

Категорически нерекомендуемый способ. Причин две

1) live тяжелый метод сам по себе. В динамике он будет использоваться когда надо и когда не надо. И может привести к приводит утечкам памяти. В 1.4 утечки точно были.

2) такой способ генерирует столько обработчиков, сколько будет ссылок. Если ссылок много то будет ж*па.

Проще использовать делегирование событий. Обрабатывать клик на родительском контейнере и определять откуда источник.

для последних версий смотрите здесь: http://jquery.page2page.ru/index.php5/On

для старых версий примерно то же самое:

$(parent_of_a).click(function(e) { // вешаем обработчик клика на контейнер где будут поялвяться ссылки

var clicked = $(e.target), href=clicked.attr('href'); // определяем откуда пришел клик и есть ли у этого элемента атрибут href

if (href) {делаем что-то с ссылкой}

return true;

});

Тынгыр, мынгыр, комсомол (http://erum.ru). Ехари, ехари, (жалобно) аяврик. /народная тунгусская песня/
T
На сайте с 11.08.2005
Offline
181
#10
Ayavryk:

1) live тяжелый метод сам по себе.
2) такой способ генерирует столько обработчиков, сколько будет ссылок.

Думаю, что это важно (ощутимо) для больших сайтов, где много обработчиков (как минимум, больше 100 или даже 1000).

Ayavryk:

Проще использовать делегирование событий. Обрабатывать клик на родительском контейнере и определять откуда источник.

Хороший метод, спасибо.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий