Будет ли это использовать jQuery медленное время отображения страницы? - PullRequest
2 голосов
/ 07 декабря 2010

У меня есть около 300+ ссылок действий на странице, к которым я подключаю обработчики после срабатывания события document.onready (используя jQuery):

$('a.cmd').click (function() { ... do stuff ... });

Более эффективно включить onclick обработчики в HTML вместо того, чтобы jQuery прикреплял их после создания элементов DOM?

<a onclick="... do stuff ...">

Ответы [ 2 ]

5 голосов
/ 07 декабря 2010

Замедлит ли это? Да, привязка требует времени, независимо от того, сколько это займет некоторое время. Тем не менее, здесь есть несколько способов действительно улучшить вашу ситуацию.

На самом деле здесь лучше использовать обработчик .live() или .delegate(), поэтому ваша начальная стоимость привязки будет значительно меньше, например так:

$('a.cmd').live('click', function() { /* do stuff */ });

Или лучше:

$(document.body).delegate('a.cmd', 'click', function() { /* do stuff */ });

В обоих этих случаях вместо присоединения обработчика к каждому элементу DOM мы подключаем один обработчик события к document (или <body> в случае второй пример). Это означает значительно меньшую стоимость запуска страницы.

2 голосов
/ 07 декабря 2010

Встроенные обработчики событий определенно не будут более эффективными per se .Оба метода создают большое количество слушателей.

Эффективный способ сделать это с помощью .live() или .delegate().

$('a.cmd').live('click', function () { /* do stuff */ });

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

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