2016-06-29 10 views
1

Ich versuche press zu jQuery Selektor hinzuzufügen. Ich habe viele Elemente in demselben Dokument, also kann ich nicht für jede IDs verwenden. Ich versuchte durch $(selector)[i] wie erklärt here.jQuery funktioniert nicht mit Hammer.js

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

Es produziert keinen Fehler und funktioniert nicht. Ich habe nicht verstanden, was ich hier vermisse.

Und wenn ich versuche, selectProduct[i] von console.log(selectProduct[i]); zu loggen gibt es Ergebnis.

UPDATE 1

Wenn ich für Schleife entfernen und verwenden nur selectProduct[0], selectProduct[1], ... es funktioniert, aber mit selectProduct[i], es funktioniert nicht, also ich denke Problem für Schleife eingeschaltet ist. Aber ich habe es nicht verstanden.

UPDATE 2

I auch

mit jQuery plugin, gleiche Problem versucht

UPDATE 3

Wieder habe ich versucht, mit each(), das gleiche Problem. Es wird die Konsolennachricht gedruckt, aber addClass() funktioniert nicht. Ich schätze das Problem ist mit this Funktion, die das aktuelle Element nicht zurückgibt.

Antwort

0

Wechsel Schließlich löste ich das Problem mit each Funktion

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

Warum verwenden Sie ein für? Versuchen Sie Ihren Code wie dieser

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

hammer.min.js: 6Uncaught Typeerror: a.addEventListener ist keine Funktion – NeosFox

+0

statt mit jquery Selector, versuchen Sie mit reinem js one – Roxoradev

+0

Ich versuchte den gleichen Fehler, können Sie auch eine andere Frage zu dieser Frage verbunden, möglicherweise erhalten Sie etwas – NeosFox