Подтвердить что ты не робот

Является ли livequery устаревшим

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

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

    });
});
4b9b3361

Ответ 1

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, который вызывает эти изменения, может быть полезно.

Ответ 2

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

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

стать

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

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