• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

JQuery .click function nur für das vorangegangene Element ausführen

Blodyman

New member
Hi, hab ein kleines Problem und komm auf keine "einfache" Lösung. Ich versuche bei einem Klick auf einen Button namens "submit" das von einer Funktion errechnete Ergebnis mit der eingetragenen Zahl im Numbfeld-Element davor zu vergleichen. Das funktioniert soweit, aber wenn ich, ein weiteres Script in der Funktion, eine neue Aufgabe erstellen lasse errechnet er, bei einem klick auf den NICHT letzten Button, alle Ergebnisse die darunter kommen und feuert den alert. Ich möchte aber nur das Ergebnis von der Aufgabe, bei der man gerade auf den "submit"-Button geklickt hat.

Ich hoffe ihr könnt mir schnell weiterhelfen :)

Code:
    function Rechnen() {
        var Zahllength = 0, Zahl = ["", ""];

        for (var durchlauf = 0; durchlauf <= 1; durchlauf++) {
            Zahllength = (Math.random() * (2 - 1) + 1);
            Zahllength = Math.round(Zahllength);
            for (var i = 1, tmp; i <= Zahllength; i++) {
                tmp = Math.round(Math.random() * (9 - 1) + 1);
                Zahl[durchlauf] += tmp;
            }
            Zahl[durchlauf] = parseInt(Zahl[durchlauf]);
        }
        var res = Zahl[0] * Zahl[1];
        $("body").append(Zahl[0] + "x" + Zahl[1] + "= <input type='number'> <input type='button' name='submit' value='Ergebnis!'> <input type='button' name='neueAufgabe' value='Neue Aufgabe!'> <br>");


        $(function () {
            $('input[name="submit"]').click(function () {
                if ($(this).prev().val() == res) {
                    alert("Richtig! " + res);
                } else {
                    alert("Falsch! \n Die Richtige Zahl ist: " + res);
                }
            });
        });

        /* nächste Aufgabe */
        $('input[name="neueAufgabe"]').click(function () {
            $('input[name="neueAufgabe"]').remove();
            Rechnen();
        });
    }
    /* initialisieren der 1. Aufgabe*/

    $(function () {
        Rechnen();
    });

    </script>
 
Der Selektor input[name="submit"] ist einfach bei jedem Aufruf von Rechnen gleich und passt immer auf alle diese <input>s. Du musst die irgendwie unterscheiden. Entweder indem du da irgendwie noch eine Eindeutigkeit in den Namen reinbekommst (z.B. durch einen Zähler) oder indem du dir gleich die entsprechende Node speicherst und nicht erst das neue HTML ins DOM schreibst und dann erst wieder mühlselig das richtige raussuchst.
 
Zurück
Oben