Может ли добавление слушателей jQuery замедлить работу браузера? - PullRequest
2 голосов
/ 13 апреля 2010

У меня есть приложение, которое выдает ответ через Ajax и создает 5-20 новых слушателей jQuery-кликов при каждом обновлении.Как браузеры IE, так и браузеры Mozilla, похоже, замедляются с использованием.Может ли это значительно снизить производительность браузера?Можно ли «освободить» слушателей?

Ответы [ 3 ]

3 голосов
/ 13 апреля 2010

Добавьте к тому, что Энди сказал о концерте.

Возможно, вам следует использовать делегат или live для элементов, которые вы добавляете на страницу. Похоже, вы не привязываете уникальные события к новым элементам (при каждом обновлении), а скорее повторно используете функции.

В jQuery 1.4.2 использование может использовать делегат () следующим образом:

// the container,        the selector, "the event", the function to be called
$("#container").delegate(".selector",  "click",     function(){
  // do stuff...
});

Это нужно будет вызывать только один раз, и каждый новый элемент с добавленным в "#container" классом селектора будет иметь привязанное событие

2 голосов
/ 13 апреля 2010

Вы можете отсоединить слушателя, используя unbind:

$("a").unbind("click"); // remove click event handler(s)
$("a").unbind(); // remove all event handlers

и удалить live события, используя die:

$("#foo").die(); // remove all live events
$("a").die("click"); // remove live click event handlers
2 голосов
/ 13 апреля 2010

Слушатели, установленные с помощью .bind(), освобождаются при удалении элемента или .unbind() изд. Те, которые установлены с помощью .live(), сохраняются до тех пор, пока вы не вызовете .die(), или элемент, к которому они привязаны, будет удален (который может быть где-то в DOM, если вы укажете, иначе по умолчанию для корня DOM - .live() работает без привязки к целевому элементу, поэтому элемент может быть удален / заменен / обновлен, а слушатели событий все еще связаны).

5-20 слушателей звучат несколько слишком много - если возможно, рассмотрите возможность связывания меньшего количества обработчиков, так как старые браузеры будут взламываться под давлением гораздо быстрее, чем новые.

...