2017-02-02 3 views
0

Je suis en train de coder quelque chose que je veux faire pivoter différents objets en suivant le mouvement de la souris..chaque fonction sur Jquery

Le code ralentit la page, j'essaie donc de l'optimiser.

Heres le code d'origine où il appelle la fonction:

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); 
}); 

au lieu d'appeler la fonction pour chaque élément, je veux juste avoir une fonction pour tous les éléments avec la même classe:

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

[Mise à jour Codepen] http://codepen.io/thalesribeiro/pen/KaRmLB

Est-ce que je me manque dans la syntaxe?

Cheers, T

Répondre

2

Vous appelez la fonction et une fois en passant le résultat à each, ce qui ne va pas travailler. Au lieu de cela:

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

Comme beaucoup de fonctions itérateur dans jQuery et Lodash/Souligné vous devez passer each une fonction qui est évaluée pour chaque élément. Il y a une grande différence entre f(this) et function() { f(this) }.

+0

Maintenant, il me semble plus logique de faire la syntaxe avec les fonctions, bien que le code ne fonctionne toujours pas pour moi. J'ai ajouté mon codepen pour que vous puissiez voir comment cela fonctionne. –

+0

Lors de l'écriture de JavaScript ** toujours ** gardez votre console d'erreur ouverte. Je reçois "pw.offset n'est pas une fonction." avec votre code. – tadman