Les fonctions jQuery ne fonctionnent pas avec Hammer.js

J'essaie d'ajouter une press sur le sélecteur jQuery. J'ai beaucoup d'éléments sur le même document. Je ne peux donc pas utiliser d'ID pour chacun d'eux. J'ai essayé de $(selector)[i] comme cela a été expliqué ici .

 var selectProduct = $('.mh60 a'); for (var i = 0; i < selectProduct.length; i++) { Hammer(selectProduct[i]).on("press", function() { $(selectProduct[i]).addClass('active'); }); } 

Il ne produit aucune erreur et ne fonctionne pas. Je n'ai pas compris ce que je manque ici.

Et lorsque j'essaie de connecter selectProduct[i] par console.log(selectProduct[i]); Il donne undefined résultat undefined .

MISE À JOUR 1

Lorsque je supprime pour la boucle et que j'utilise selectProduct[0] , selectProduct[1] , … il fonctionne mais avec selectProduct[i] , ça ne marche pas, alors je pense que le problème est selectProduct[i] pour la boucle. Mais je ne l'ai pas compris.

MISE À JOUR 2

J'ai également essayé avec jQuery plugin , même problème

MISE À JOUR 3

Encore une fois, j'ai essayé avec each() , même problème. Il imprime le message de la console, mais addClass() ne fonctionne pas. Je suppose que le problème est avec this fonction qui ne retourne pas l'élément actuel.

 $('.mh60 a').each(function(){ var mc = new Hammer(this); mc.on("press", function() { console.log('Double tap!'); $(this).addClass('active'); }); }); 

Pourquoi utilisez-vous un pour? Essayez de changer votre code comme celui-ci

 var selectProduct = $('.mh60 a'); selectProduct.Hammer().on("press", function() { $(this).addClass('active'); }); 

Enfin, j'ai résolu le problème en utilisant each fonction

 $('.mh60 a').each(function(){ var mc = new Hammer(this); var currentEle = $(this); mc.on("press", function() { currentEle.addClass('active'); }); });