2013-06-19 1 views
1

В соответствии с API jQuery Описание: live полностью удаляется в последней версии. Но его широко использовали в наших проектах. Например:JQuery замена live :: `delegate` или` on`

$('div.collapsed').live('mouseover', function() { 
     TBD.GENERAL.showLoginOther(this); 

}); 

$(".info_bar .filter a, .pagination a").live("click", function() { 
    TBD.DHTML.shadeWithLoading($(this).data('container-id')); 
    $.getScript(this.href); 
    return false; 
}); 

$("form[loading-effect]").live('ajax:before', function() { 
    $(this).find('.button_panels, .loading_panels').toggle(); 
}); 

......... 

т.д.

Теперь, если я хочу использовать последнюю JQuery, что будет правильным замена жить? делегат или на?

Ожидание немного информация. Заранее спасибо

+2

вы можете найти лучшее объяснение в документации. Я думаю, –

+0

http://stackoverflow.com/a/14405273/1414562 –

+0

Простейшим решением является не обновление вашей версии jQuery, если у вас нет какой-либо другой конкретной причины для этого. – Blazemonger

ответ

1

С .live() осуждается вы лучше использовать .on() как

$('div.collapsed').on('mouseover', function() { 

или можно использовать как

$(document).on('mouseover','div.collapsed', function() { 

Поскольку

  1. Вы не можете использовать. live() для многоразовых виджетов.
  2. stopPropagation() не работает в режиме реального времени.
  3. live() работает медленнее.
  4. live() не является цепным.

и метод .on() предоставляет все функции, необходимые для прикрепления обработчиков событий.

+1

Почему бы не «делегировать»? или почему «на». Объяснение будет оценено – Muntasim

+1

Это не то, как использовать делегирование, неправильный синтаксис –

+0

См. Мое редактирование @roasted – Gautam3164