2016-05-21 17 views
0

Wenn ich nach Kindern eines Elements suche, verwende ich die folgenden Zeilen.Was entspricht Eltern() bei der Suche nach einem Vorfahren

var myself = $(donkey); 
var myProblems = myself.children("*"); 
var notMyProblems = myself.find("*"); 

Wenn jedoch in der entgegengesetzten Richtung, kann ich die Linie unten verwenden, aber ich habe nicht die rezidivierende entsprechen die finden Methode gefunden. Gibt es so etwas nicht?

var myself = $(donkey); 
var problemCreator = myself.parent(); 

Als Beispiel würde Ich mag das Tabellenelement finden, die eine Zeile enthält, die einen Teiler enthält, die eine Spanne enthält, die eine Schaltfläche enthält, die geklickt wurde. Ich kann so etwas tun.

var clickaroo = $(event.target); 
var holder = clickaroo.parent().parent().parent().parent().parent(); 

Allerdings sieht es hässlich und ist zerbrechlich, falls die Taste in einem unerwarteten oder unforseen zusätzliche div oder Spanne verschachtelt ist. Ich würde gerne so etwas verwenden.

var clickaroo = $(event.target); 
var holder = clickaroo.superParent("table"); 

Ich habe googlearched für es, aber bekam nada. Verwende ich falsche Schlüsselwörter oder gibt es keine solche Funktion?

+0

Ich glaube, Sie wollen am nächsten: https://api.jquery.com/closest/ – chiliNUT

+0

Dies ist ** ** genau, was ich suchte. Nicht intuitiver Name, meiner Meinung nach. Sie müssen es als Antwort posten, damit ich es als Antwort akzeptieren kann. –

Antwort

2

Die Methode, die Sie suchen, ist nächstgelegen().

Wenn Sie versuchen, Elemente der Klasse findMe zu targetieren, können Sie die folgenden fünf Methoden verwenden.

var self = $("#myMyselfAndI"); 
var oneLevelDown = self.children(".findMe"); 
var anyLevelDown = self.find(".findMe"); 
var oneLevelUp = self.parent(); 
var anyLevelUp = self.closest(".findMe"); 
var allUppwards = self.parents(); 
1

Wenn Sie im DOM nach oben suchen möchten, gibt es ein paar Optionen. Wenn Sie .parent() verwenden, wird nach einem unmittelbaren Elternknoten des Knotens gesucht, aber wenn Sie parents(selector) verwenden, durchläuft die Suche den Baum nach oben und gibt alle Übereinstimmungen zurück. Anstatt also find können Sie tun dies

var myself = $(donkey); 
var parents = myself.parents(); 
+0

Sie haben Recht. Wenn Sie jedoch ** nach oben ** gehen, entsteht immer ein einzelnes Elternelement pro Ebene (genau ein Element muss ein Vorfahre des aktuellen Elements sein). In den meisten Fällen, die ich hatte, muss ich nur das ** erste ** Vorkommen eines Vorfahren finden, der eine Bedingung erfüllt, also scheint * nearest() * sogar bessere Alternative zu sein. Trotzdem ist Ihre Antwort richtig - werfen Sie einen Blick auf die andere Antwort. –

+0

@KonradViltersten ja Ich habe es weggelassen, weil beide Methoden, die Sie in Ihrem Beitrag ("Kinder" und "finden") verwenden, sich genau so verhalten. Alle Matches zurückgeben, nicht nur eins –