Ich habe einige rekursive HTML-Dateien in der folgenden Baumstruktur:
div.item
div.content
input
div.container
div.item
div.content
input
div.container
div.item
etc...
Hier ist ein jsfiddle mit einem funktionierenden Beispiel: http://jsfiddle.net/HWHRZ/
Ich habe auch ein Objekt mit jQuery Referenzen zu jedem der .item
divs.
Was ich tun möchte, ist, für jede spezifische .item
wählen Sie nur die unmittelbar darunter liegenden Eingänge aus, nicht aber die tiefer liegenden. .container
o .item
Elemente.
Um die Sache noch komplizierter zu machen, ist nicht jeder .item
ist in Bezug auf die Eingänge identisch aufgebaut. Manchmal können die Eingänge in anderen div
Elemente, so dass ihre Auswahl mit einer einfachen .find('> .content :input')
wird nicht immer funktionieren.
Ich habe eine Lösung gefunden, aber sie ist bei großen Bäumen ineffizient und überhaupt nicht elegant: $(':input', $item).not($('.container :input', $item)).toggleClass('changed');
( $item
ist eine Referenz, die ich in einem Objekt aufbewahre). Diese Lösung funktioniert, wie sie sollte, aber ist viel zu ineffizient für jede ausreichend große Baumstruktur, ist die not()
eine Menge von Knoten verarbeiten müsste.
Kurz gesagt: Ich muss bestimmte untergeordnete Knoten auswählen, die sich NICHT innerhalb bestimmter anderer untergeordneter Knoten befinden.
Kennt jemand eine effizientere Methode, dies zu tun?