2014-11-20 2 views
0

мой webapp очень медленный, и я начинаю исследовать, чтобы найти причину. Я думаю, что я нашел проблему, но не решение. Я проанализировал консоль, и вы можете увидеть результат на экране. проблема возникает каждый раз, когда я нажимаю, есть латентность почти 1000 мс из-за события на клике. во-первых, я думаю, что из-за слишком большого количества событий нажмите на тело в моем коде, но, как вы видите, это всего лишь 0,3 и 1%, если общая стоимость), очень крошечный по сравнению с 97,71% от n.event.handler , Так что мой вопрос в том, откуда эта латентность?высокая латентность на событии с jquery

в моем коде, есть много:

$('html').on('click', '.class', function(){ }); 

может быть слишком много?

enter image description here

enter image description here

+4

Как мы можем ответить на этот вопрос, не видя кода, выполняемого в этом обработчике кликов? –

+0

Попробуйте с помощью '$ (document) .on ('click', '.class', function() {})'. Это может не решить вашу проблему, [но, похоже, быстрее] (http://jsperf.com/clickclclcl). –

+0

@DanLee вы проверяете привязку обработчиков событий, а не вызов. – lordvlad

ответ

0

Если вы думаете, что слишком многие из них:

$('html').on('click', '.class', function(){ }); 

вы можете попробовать и реорганизовать их в один обработчик:

$('html').on('click', function (e) { 

    if (e.target.classList.contains('class')) { 
     // e.target is the clicked element 
     // do something here 
    } 

    if ($(e.target).is('class2')) { 
    // you can wrap e.target into a jQuery object 
    // the same way you wrap this. 
    // do something else here 
    } 

}); 

Кроме того, в соответствии с ответом на вопрос this question, лет u должен удалить и добавить эти обработчики событий, если у вас много динамически созданных целей.

+0

благодарю за это, но в этом случае, как я могу получить $ ('this') из щелчка? – user3415011

+0

Моя ошибка. Посмотрите на обновленный ответ – lordvlad

+0

"this.classList.contains ('class')", это не работает, он не может найти класс. с электронной целью, которую вы написали до ее работы, но в моей функции я использую $ (это), это действительно полезно для меня. – user3415011

Смежные вопросы