Jquery each() Zähler

Lesezeit: 1 Minute

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.

Benutzer-Avatar
Nick Craver

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.

Benutzer-Avatar
Benutzer113716

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.

1256940cookie-checkJquery each() Zähler

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy