jQuery 中的mousemove
-event 会在每次鼠标移动时触发,这会导致每秒执行数百次事件。假设我们有这个代码片段。
$(document).on('mousemove', function(e){
/**
* This piece of code checks if the mouse is within a 50px range
* on either side of the middle of the page.
* If is, it shows a set of elements (contained in the action_dots variable).
*/
var treshold = 50;
var action_dots = $('.branch[open][focus]').children('.branch-line').children('.action-dot');
var opacity = action_dots.css('opacity');
if(e.pageX >= ($(window).width()/2 - treshold) && e.pageX <= ($(window).width()/2 + treshold)){
if(opacity == 0){
action_dots.transition({ opacity: 1 }, 100);
}
}
else{
if(opacity == 1){
action_dots.transition({ opacity: 0 }, 100);
}
}
});
每次事件执行时声明这些变量是否有效?由于它必须找到与 的选择器匹配的所有元素var action_dots
,因此您可能会认为这是对性能的负担。或者 jQuery 可以以某种方式缓存的内容var action_dots
?同样的问题适用于检查动作点的opacity
css-property 与var opacity
.