Ich kann keine definitive Antwort dafür finden. Berücksichtigen Sie Folgendes:
%Vor% Dieser Code versucht, doppelte Werte in einer Reihe von Eingaben mit der Klasse syndUID
zu finden. Sie sind verstreut um eine Form, also nicht nebeneinander im DOM.
next().val()
ist jedoch immer undefiniert. verwende ich die falsche Funktion? Wie gucke ich einfach zum nächsten Element? Ich habe Zugriff auf den Index, aber ich weiß nicht, wie ich ihn überhaupt nutzen soll.
BEARBEITEN:
Nach dem Lesen der Kommentare und Antworten wurde mir klar, dass es in jQuery wirklich keinen richtigen Iterator gibt, der mir sehr dumm erscheint, da er jedes () bereitstellt. Ich hatte auch einen anderen Fehler mit dem obigen Code. Hier ist die letzte Lösung, die ich verwendet habe:
%Vor%Für jeden, der das über Google findet, können die Antworten anderer eine gute Alternative sein, aber für meine Bedürfnisse fand ich das ausreichend.
Sie können etwas wie $('.syndUID')[i+1]
ausführen, um die Liste neu zu ordnen, indem Sie sich auf dieses Element konzentrieren (und es optional in ein jQuery-Objekt zurückverwandeln)
Die Verwendung von [i+1]
gibt ein DOM-Element zurück, aber Sie können .eq(i+1)
verwenden, um ein jQuery-Objekt zurückzugeben. Oder, wenn Sie Ihre zukünftigen Entwickler hassen, wickeln Sie das DOM-Element in $()
, weil Schrauben Lesbarkeit!
Wie Andreas gesagt hat - das erneute Auffrischen der Liste verschwendet die Erinnerung. Vor der Schleife cache das Objekt in eine Variable mit var element = $('.syndUID')
, so dass du das DOM nicht so oft iterierst.
next()
packt das nächste Geschwister - nicht den nächsten Vorfahren oder Elternteil.
Wenn wir beispielsweise eine ungeordnete Liste haben, funktioniert next () wie folgt:
%Vor%Wenn Sie also versuchen, den nächsten Elternteil zu übernehmen, funktioniert .val (), das auf .next () angewendet wurde, nicht. Ich weiß nicht, was Sie ausgeben (Tabelle, UL, DIV, usw.), so dass es schwierig ist, Ihnen eine funktionierende Lösung zu geben - aber das ist wahrscheinlich Ihr Problem. Sie durchqueren das DOM nicht richtig.
Nun, Sie haben Ihr sortiertes Array bereits, vielleicht anstatt dies mit .each()
zu tun, verwenden Sie einfach eine einfache for
Schleife?
Dies wird jedoch nur auf ein Duplikat im nächsten syndUID
-Element im Array prüfen. Um eine vollständige Suche durchzuführen, müssen Sie jedes Element auf jedes Element (ohne sich selbst) aus dem Array überprüfen. Das würde eine verschachtelte Schleife beinhalten, die Ihrer Funktion eine Ordnung von n ^ 2 hinzufügen würde
Tags und Links javascript jquery