2017-02-02 4 views
0

Я кодирую что-то, что я хочу, чтобы разные объекты вращаются после движения мыши.. Вся функция на JQuery

Код вроде замедляет страницу, поэтому я пытаюсь ее оптимизировать.

Heres исходный код, где он вызывает функцию:

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

Что я пропускаю в синтаксисе?

Приветствия, T

ответ

2

Вы называете функцию один раз и переходя в результате к each, который не будет работать. Вместо этого:

$(document).on('mousemove', function(e) { 
    $('.arrow-designers').each(function(arrow) { 
    rotateOnMouse(e, arrow)); 
    }); 
}); 

Как много функций итераторов в JQuery и Lodash/Underscore вам необходимо пройти each функцию, которая вычисляется для каждого элемента. Существует большая разница между f(this) и function() { f(this) }.

+0

Теперь мне больше смысла, как делать синтаксис с функциями, хотя код по-прежнему не работает для меня. Я добавил код, чтобы вы могли видеть, как это работает. –

+0

При написании JavaScript ** всегда ** держите консоль ошибок открытой. Я получаю: «pw.offset не является функцией». с вашим кодом. – tadman

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