我正在编写一些东西,我想让不同的物体在鼠标移动后旋转。
代码有点放慢了页面的速度,所以我试图对其进行优化。
下面是调用函数的原始代码:
var arrow1 = $('#arrowD1');
var arrow2 = $('#arrowD2');
var arrow3 = $('#arrowD3');
var arrow4 = $('#arrowD4');
$(document).on('mousemove', function(e){
rotateOnMouse(e, arrow1);
rotateOnMouse(e, arrow2);
rotateOnMouse(e, arrow3);
rotateOnMouse(e, arrow4);
});
而不是为每个元素调用函数,我只想为具有相同类的所有元素提供一个函数:
$(document).on('mousemove', function(e){
$('.arrow-designers').each(rotateOnMouse(e, this));
});
[更新的Codepen] http://codepen.io/thalesribeiro/pen/KaRmLB
语法中是否缺少任何内容?
干杯, Ť
答案 0 :(得分:2)
您正在调用该函数一次并将结果传递给each
,这是行不通的。代替:
$(document).on('mousemove', function(e) {
$('.arrow-designers').each(function(arrow) {
rotateOnMouse(e, arrow));
});
});
与jQuery和Lodash / Underscore中的许多迭代器函数一样,您需要传递each
一个为每个元素计算的函数。 f(this)
和function() { f(this) }
之间存在很大差异。