производительность jQuery mousemove - PullRequest
2 голосов
/ 29 апреля 2010

Когда я связываю событие mousemove с элементом, оно работает без проблем с любым браузером, кроме Internet Explorer. В IE загрузка ЦП слишком велика, а некоторые связанные вещи (например, всплывающие подсказки) ужасны. Можно ли как-то избавиться от проблемы с производительностью? (да, я знаю, не используйте IE:))

ОБНОВЛЕНИЕ: Даже если я ничего не делаю в функции обработчика событий, загрузка ЦП все еще высока. Вот мой код:

$("#container").live("mousemove", function(e){

});

Это нормально?

Ответы [ 2 ]

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

Вы используете селекторы jquery в событии mousemove? Я видел случаи, когда селекторы jquery замедляются на сложных страницах, если вы помещаете селектор в событие, которое срабатывает много раз, возникает заметная задержка. Во многих случаях вы можете просто сохранить ссылку jquery на элемент перед mousemove, тогда mousemove использует ссылку на элемент вместо того, чтобы снова использовать селектор, который внутренне перебирает DOM при каждом его вызове.

0 голосов
/ 29 апреля 2010

У вас не должно возникнуть проблем с привязкой простых обновлений к событию перемещения мыши, даже в IE. Перетаскивание, как это недавно наблюдалось на сайтах из миллиарда, реализовано именно таким образом.

Если вы видите сильные всплески в процессоре, я бы подумал, что, возможно, есть более значительная причина.

...