производительность livequery - PullRequest
11 голосов
/ 27 января 2011

Недавно обнаружил , что плагин livequery для jQuery может быть довольно расточительным, поскольку он не использует делегирование событий, а связывает все привязываемые события и перепроверяет весь DOM при каждом изменении

если у кого-то есть дополнительная информация или предложения по лучшим практикам с использованием livequery и .live (), я был бы очень признателен

1 Ответ

11 голосов
/ 27 января 2011

Редко когда вам действительно нужен плагин, как livequery.Вероятно, единственное время, которое вам действительно нужно, это если вам нужно реагировать на изменения в DOM, сделанные другим кодом jQuery, который вы не можете изменить .

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

ЛучшеАльтернативой (IMO) обоим является метод delegate() (документы) , который использует делегирование событий точно так же, как .live(), но позволяет ограничить егок определенной части страницы.

$('#someContainer').delegate('a.someButton', 'click', function() {
    // do something when an "a.someButton" inside "#someContainer" is clicked
});

Обратите внимание, что методы делегирования событий реагируют на события браузера, а не на изменения в DOM.Если вам нужно запустить какой-то код на основе изменения в DOM, которое вы сделали, вам нужно запустить этот код при внесении этого изменения в DOM.

...