Является ли livequery устаревшим - PullRequest
13 голосов
/ 06 октября 2011

Я смотрю на старый код. Я вижу, что для элементов, добавляемых с помощью ajax, есть много кода livequery. Не нужны ли livequery с более новыми версиями jquery? Кто-нибудь знает, после какой версии он точно не нужен?

$("#somediv").livequery(function(){
    $(this).click(function(){

    });
});

Ответы [ 2 ]

11 голосов
/ 06 октября 2011

livequery - это совершенно другое понятие, чем .live().

В методе .live() используется делегирование событий для обработки событий, происходящих в любом месте на странице.

livequery вызовет обработчики, когда произойдут изменения DOM (с помощью методов jQuery) .

В приведенном ниже примере, когда элемент с class="some_class" добавляется в DOM (или класс добавляется к элементу), запускается первый обработчик.При снятии второй.

$('.some_class').livequery( function() {

       // apply a plugin to the element
    $(this).somePlugin();

}, function() {

    // clean up after the element was removed

});

Требуется фактическая потребность в livequery, но в том редком случае, когда вам нужно реагировать на изменения DOM и не иметь никакого контроля над jQuery, вызывающимэти изменения, это может быть полезно.

3 голосов
/ 22 декабря 2016

Вы должны использовать on () и прикрепить событие к родителю или телу. Пример:

$('#obj').livequery('click', function() { ... });
$('#obj').livequery(function() { ... });

стать

$('body').on('click', '#obj', function() { ... });
$('body').on('DOMNodeInserted','#obj', function() { ... });

обратите внимание, что DOMNodeInserted - это IE9 +

...