2013-06-12 2 views
3

просто интересно узнать, какой из - Click(), Live() and On() в настоящее время является предпочтительным методом, чтобы поймать щелчок мышью пользователя?jquery click(), live() и on()

Я предполагаю, что live() отсутствует, поскольку я считаю, что сканирует большую часть DOM.

Thankyou

+2

TL; DR: 'live' устарел, ужасен и удален из 1.9,' bind' и 'delegate' устарели,' on' является предпочтительным способом связывания произвольных событий, и 'click' просто отлично, но любопытно ограниченное. –

ответ

4

От Jquery документы:

По JQuery 1.7, метод .live() является устаревшим. Используйте .on() до , присоедините обработчики событий. Пользователи более старых версий jQuery должны использовать .delegate() в предпочтении .live(). Этот метод предоставляет средство для прикреплять делегированные обработчики событий к элементу документа страницы, , что упрощает использование обработчиков событий при динамическом содержании контента , добавленном на страницу. См. Обсуждение прямых или делегированных событий в методе .on() для получения дополнительной информации.

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

For earlier versions, the .bind() method is used for attaching an event handler directly to elements. 

TLDR: Всегда используйте on(), не используйте live()

1

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

  1. .click() стандартный обработчик события

    .click(function() { 
        //Applies to DOM already present 
    }); 
    
  2. .on() используется, когда вам требуется делегирования событий. Это заменили традиционную bind() и delegate()

    .on('click', function() { 
         //Delegates to each element is DOM as it manipulated or generated 
    }); 
    
+0

['bind'] (http://api.jquery.com/bind/) не устарел, а просто перегружен. –

1

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

1

но JQuery 1.9 не поддерживает живую функцию, вместо того, вы должны использовать «на»

1

TL; DR: live осуждается, bind и delegate являются superseeded, on является предпочтительным способом связать произвольные события и click является просто отлично, но вроде бы ограничено.

$(selector).live("click", ...) является устаревшим, так как 1,7, удален из JQuery, так как 1.9, негибкий (он всегда связывается с document), крайне неэффективно (он сначала находит элементы, а затем отбрасывает выбор и использует селектор вместо этого), требует селектора, чтобы быть хранится в объекте jquery и, как правило, плохо.

$(document).on("click", selector, ...) является буквальной заменой для live, но он не имеет ни одной из его недостатков. Это функция привязки события do-all jQuery. Он может связывать что угодно где угодно или делегировать что угодно: $parent.on(events, [targetSelector,] handler). Вы можете даже связать несколько событий сразу: .on("keypress paste change", ...)

bind и delegate являются старшие двоюродные on. Первый не может делегировать, последний должен. Они также различаются по порядку аргументов - on здесь, чтобы решить это. Они были заменены на on, но они не были устаревшими (с jQuery 1.10). Если вам нужно использовать старую версию jQuery (pre-1.7), вот они. В противном случае придерживайтесь on. Их текущая реализация просто перенаправляется на on.

click, mouseOver, change и many other служат в качестве двойной пошлины псевдонимы для on и trigger. Буквально - они не делают ничего, кроме как отворачиваться к одному из них. Большинство из них существуют с самого начала, и они удобны. Однако они не могут делегировать, и для них нет соответствующих методов развязывания. Если вы используете off, лучше дополнить его on. Одним из приятных свойств является то, что они несут с собой обещание кросс-браузерной совместимости. Или, по крайней мере, место, где можно документировать отсутствие поддержки кросс-браузера (а именно: load для изображений). Мое личное предпочтение - использовать on даже в тех случаях, когда достаточно было бы click.