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