Может добавить слушателей jQuery замедлить производительность браузера?
-
26-09-2019 - |
Вопрос
У меня есть приложение, которое приносит ответ через AJAX и создает 5-20 новых прослушивателей JQuery Click на каждом обновлении. Оба браузера IE и Mozilla, кажется, замедляются с использованием. Может ли это замедлить производительность браузера значительно. Могут ли слушатели быть «выпущенными»?
Решение
Слушатели установлены с использованием .bind()
выпущены, когда элемент удален или .unbind()
ред. Те, которые набор используют .live()
сохраняться, пока вы не позвоните .die()
Или элемент, который они связаны, удаляется (что может быть где-то в доме, если вы укажете, в противном случае он будет по умолчанию для корня DOM - .live()
Работает, не связывающаяся с целевым элементом, поэтому элемент может быть удален / заменен / обновлен, и слушатели событий все еще связаны).
5-20 слушателей звучит слишком много - рассмотреть связующие менее обработчики, если это возможно, поскольку старые браузеры будут растрескиваться под давлением гораздо быстрее, чем новые.
Другие советы
Чтобы добавить к тому, что Энди сказал о жизни.
Вы, вероятно, должны использовать делегирование или жить На элементах вы добавляете на страницу. Похоже, вы не связываете уникальные события к новым элементам (на каждом обновлении), а скорее повторные функции.
В JQuery 1.4.2 Использование может использовать делегат (), как это:
// the container, the selector, "the event", the function to be called
$("#container").delegate(".selector", "click", function(){
// do stuff...
});
Это нужно было бы назвать только один раз, и каждый новый элемент с классом «селектор», добавленный в «# Container», будет иметь связанный событие Click