Как использовать jQuery .live () с ajax - PullRequest
7 голосов
/ 04 марта 2010

В настоящее время я использую Плагин / функция John Resig LiveQuery , чтобы позволить пользователям сортировать длинный неупорядоченный список элементов списка.Код выглядит следующим образом: $('input#q').liveUpdate('ul#teams').focus(); Проблема возникает, когда я использую ajaxified вкладки для сортировки списков.По сути, я использую ajax для извлечения разных списков, а функция liveUpdate() не имеет доступа к новым библиотекам.

Полагаю, мне нужно связать это с помощью функции .live() .Но мне неясно, как связать это с событием ajax, я использовал только событие «click».Как бы я связал новый liveUpdate() с недавно загруженными элементами списка?

РЕДАКТИРОВАТЬ: Вкладки Ajax запускаются через WordPress AJAX API, так что код довольно сложный, но упрощенный это примерно так:упрощено ради этого разговора, но в основном, когда $.post загружает ответ на месте, .liveUpdate() не имеет к нему доступа.Я считаю, что функция .live() является ответом на эту проблему, я просто не знаю, как реализовать ее с помощью $.post()

Ответы [ 5 ]

4 голосов
/ 15 марта 2012

Как упомянуто в документации JQuery, .live () считается устаревшим. Вы должны использовать метод .on () вместо этого.

$("#yourSelector").on("click", function() {
    // statement
});

Чтобы также управлять объектом будущего типа селектора, вы можете использовать .on () вот так

$(document).on("click", "#yourSelector", function() {
    // statement
});
1 голос
/ 04 апреля 2012

У меня также возникли проблемы с использованием только

$('selector').click(function(.. 

после Ajax-вызова и, наконец, обнаружил, что нам нужно использовать

$('selector').live("click", function(){.. 

или новый метод

$(document).on('click', 'selector', function(){..

для привязки события к новым элементам, созданным после вызова Ajax.

$(document).on('click','selector', function(event){
//your code    
});

Для живого

$('selector').live('click', function(event){    
//your code    
});
1 голос
/ 15 марта 2012

Попробуйте использовать jQuery's Ajax Events

$('input#q').ajaxComplete(function(){
    $(this).liveUpdate('ul#teams').focus();

    $(this).unbind('ajaxStop');
});
0 голосов
/ 23 января 2012
$("div.item-list-tabs").live("click",function(){
//statements..
});
0 голосов
/ 07 марта 2010
$('input#q').live(function() {
   $(this).liveUpdate('ul#teams').focus();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...