В jQuery я должен выбрать live (), делегат () или on ()? - PullRequest
6 голосов
/ 19 ноября 2011

Я прочитал документацию jQuery по обработке событий, но до сих пор не могу понять, что мне делать.

У меня есть мобильное приложение, в котором контент загружается с помощью ajax, поэтому события не могут быть связаны с документом onLoad для этого контента.

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

Какое влияние на производительность оказывает выбор между on (), live () и делегатом ()?

Что еще нужно принять во внимание?

Ответы [ 4 ]

6 голосов
/ 19 ноября 2011

Начиная с jQuery 1.7, официальный (и наиболее эффективный) способ связывания событий - .on и .off. Самый быстрый в сочетании с селектором на основе id:

$('#id').on('click', myHandler);

.on supercedes .live .delegate и .bind, для получения дополнительной информации см. Здесь:

http://blog.jquery.com/2011/11/03/jquery-1-7-released/

4 голосов
/ 19 ноября 2011

Начиная с jQuery 1.7, рекомендуется, чтобы весь новый код в будущем использовал on() и off() для всей обработки событий.

http://blog.jquery.com/2011/11/03/jquery-1-7-released/

1 голос
/ 19 ноября 2011

Если вы создаете приложение javascript для себя или для своего собственного продукта, вам следует использовать методы jQuery 1.7 и .on().

Если вы используете какой-то плагин, который можно использовать в старых версиях, я бы использовал .delegate()

1 голос
/ 19 ноября 2011

Начиная с jQuery 1.7, команда / API jQuery рекомендует:

[] метод .live () устарел. Используйте .on (), чтобы прикрепить обработчики событий. Пользователи более старых версий jQuery должны использовать .delegate () вместо .live ().

Ссылка: live() Ссылка API, по адресу: http://api.jquery.com/live/

Таким образом, выбор, после jQuery 1.7, находится между on() и delegate(); и приведенная выше рекомендация, похоже, предполагает, что вы должны использовать .on() вместо delegate(). Хотя я не могу спорить по поводу почему это так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...