Ich habe die Dokumentation ein wenig durchsucht und eine Weile im Internet verbracht, kann aber keine Lösung dafür finden! Ich möchte, dass die Warnung mir mitteilt, auf welcher Iteration von each() sie sich befand, als auf .thumb geklickt wurde.
EG: Es gibt sechs .thumb’s. Ich klicke auf Nummer 3, der Browser erscheint 3!
Was tatsächlich passiert, ist, unabhängig davon, auf welches .thumb geklickt wird, 6 erscheint.
var counter = 1;
$('.thumb').each(function () {
$(this).click(function () {
alert (counter);
});
counter++;
});
Jede Hilfe wird dankbar angenommen.
Das liegt daran, dass Sie dasselbe teilen counter
variabel für alle click
Handler und es ist das, was es am Ende der Schleife ist. Verwenden Sie stattdessen den an die Schleife übergebenen (den index-Parameter der .each()
das ist schon da), etwa so:
$('.thumb').each(function (i) {
$(this).click(function () {
alert (i+1); //index starts with 0, so add 1 if you want 1 first
});
});
Hier können Sie es testen.
Um eine Lösung wie die von @Paulo vorgeschlagene zu verwenden, müssten Sie dies folgendermaßen tun:
var list = $('.thumb');
for(var i=0; i<list.length; i++) {
(function( i_local ) {
list.eq( i ).click(function(){
alert(i_local);
});
})( i + 1 );
}
…obwohl ich @Nicks verwenden würde .each()
Lösung statt. Viel sauberer.