Проблема утечки памяти / производительности IE8 при подключении слишком большого количества обработчиков событий - PullRequest
3 голосов
/ 20 января 2012

У меня есть веб-страница с большим количеством элементов списка (около 3000).Я прикрепляю обработчик события click для них и событие hover (используя jquery).

$('li').click(function (e){
    // do processing here 
}) 

$('li').hover(function (e){
    // do processing here for hover in 
}, function (e) {
    // do processing here hover out 
}) 

В IE8 я начинаю замечать некоторое замедление, и мое первоначальное предположение состоит в том, что число событийОбработчики вызывают проблему утечки памяти / потребления.Это прекрасно работает в Chrome, FF, IE9.

Кто-нибудь еще заметил это поведение?

Я также думал, что использование делегата jquery решит эту проблему, поскольку обработчики событий будут жить в родительском контейнере, а не по одному для каждого элемента списка.Что-то вроде следующего -

$("#somecontainer").delegate('li', 'click', function () {
    //do processing for click here. 
})

Любое понимание этого очень ценится.Спасибо!

1 Ответ

5 голосов
/ 20 января 2012

Я также думал, что использование jquery делегата решит эту проблему, поскольку обработчики событий будут жить в родительском контейнере, а не по одному на каждый элемент списка.

Абсолютно. Или сделай это "новым" способом :

$("#somecontainer").on("click", "li", function () {
    //do processing for click here. 
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...