2012-05-30 4 views
7

Sagen wir, ich habe eine Hierarchie von Elementen, mit #root an der Wurzel. Ich kann $('#root > * > *') verwenden, um alle seine Enkelkinder zu bekommen. Kann ich das irgendwie machen, wenn ich schon $('#root') habe?Selektor für Enkel, oder wie man den Selektor an einem bekannten Element verankert

$('#root').find('* > *') ist definitiv nicht, wie es glücklich von jedem Nachkommen für den ersten Stern, nicht nur #root Kinder "starten" wird.

Gibt es irgendeine Funktion in jQuery, die an dem aktuellen Element "ankern" würde, beginnend mit seinen Kindern oder sich selbst? Es nervt mich seit einer Weile und ich konnte in den Dokumenten nichts Ähnliches finden.

+0

'.find() 'ist möglicherweise die am meisten nervige jQuery Traversal-Methode überhaupt. – BoltClock

Antwort

13

Entweder das finden beginnen Ausdruck mit einem anderen > (diese Syntax ist documented):

// This is functionally the same as $('#root > * > *') 
$('#root').find('> * > *') 

Oder .children() zweimal rufen: einmal für seine Kinder wieder für seine Enkelkinder:

$('#root').children().children() 
+0

Ja, ich wusste über das '.children()' Ding, aber ... nun, passt nicht, was ich tue, ich wollte wirklich die Selektor-Sache. Und das Selektor-Ding ... Wow, ich hätte nie gedacht, das zu versuchen, das ist erstaunlich. Irgendeine Idee, wie solide es ist? Ich bin ein bisschen vorsichtig, weil es undokumentiert ist - funktioniert jetzt, aber für wie lange? – Amadan

+0

@Amadan: Ich habe keine Ahnung davon ... es scheint jetzt schon eine ganze Weile zu funktionieren. – BoltClock

+0

Ich habe diesen Beitrag aktualisiert, um anzuzeigen, dass diese Funktion jetzt dokumentiert ist. – JDB

Verwandte Themen