Производительность livequery
Недавно я обнаружил, что плагин livequery для jQuery может быть довольно расточительным, поскольку он не использует делегирование событий, а связывает все привязываемые события и перепроверяет весь DOM при каждом изменении.
если у кого-то есть дополнительная информация или предложения по лучшим практикам с использованием livequery и.live(), я был бы очень признателен
1 ответ
Это редко, что вам на самом деле нужен плагин, как livequery
, Вероятно, единственный раз, когда вам действительно нужно это, если вам нужно реагировать на изменения в DOM, сделанные другим кодом jQuery, который вы не можете изменить.
В то время как .live()
использует делегирование событий, оно делает это на document
уровень, что означает, что он должен обработать все события на странице, чтобы увидеть, соответствуют ли они селекторам, предоставленным для каждого типа событий.
Лучшей альтернативой (ИМО) для обоих из них является delegate()
(документы) метод, который использует делегирование событий так же, как .live()
, но позволяет ограничить ее определенной частью страницы.
$('#someContainer').delegate('a.someButton', 'click', function() {
// do something when an "a.someButton" inside "#someContainer" is clicked
});
Обратите внимание, что методы делегирования событий реагируют на события браузера, а не на изменения в DOM. Если вам нужно запустить какой-то код на основе изменения в DOM, которое вы сделали, вам нужно запустить этот код, когда вы вносите это изменение в DOM.