Запрос обработчика событий во время регистрации события?

0

Я знаю, что некоторые запросы занимают немного больше времени, чем другие (например, сложные запросы медленнее, чем простые запросы, ids быстрее, чем классы и т.д.). В моем случае это имеет практическое значение. Интересно, как это относится к запросам в обработчиках событий.

Может ли запрос повлиять на скорость, с которой будет срабатывать обработчик событий? Или запрос уже разрешен каким-то указателем на этот объект в DOM?

Например, будут ли эти обработчики абсолютно эквивалентны? :

$("body > section > #id div.class element").click(func);
$("#element").click(func);
  • 0
    Не цитируйте меня по этому поводу, но я считаю, что влияние, хотя и очень небольшое, будет видно при первоначальном связывании обработчика событий, а не при его запуске. Насколько я понимаю, jQuery кэширует объекты DOM с подключенными обработчиками внутри для быстрого доступа. Не уверен, если это правда, хотя. Может быть, кто-то еще мог бы уточнить больше.
Теги:
event-handling

1 ответ

1

В случае, если вы укажете, скорость селектора повлияет только на начальную настройку страницы - скорость, чтобы найти элемент, на котором размещается обработчик событий. После того, как обработчик событий подключен, селектор не должен влиять на скорость срабатывания обработчика фактического события.

Случай, когда селекторная скорость может иметь значение для обработчика событий, будет заключаться в том, что вы используете функцию on() для определения обработчиков событий для элементов, которые еще не существуют - "делегированные" события. Например:

$( "#dataTable tbody" ).on( "click", "tr", func);

против

 $( "#dataTable tbody" ).on( "click", ".my-table-row", func);

Производительность первого обработчика событий будет лучше (хотя совершенно необходимо отметить, что разница обычно мала). Причина, по которой этот случай отличается от вашего примера, заключается в том, что фактический обработчик кликов помещается на tbody, а затем селектор используется во время огня, чтобы определить, является ли данное событие совпадением.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню