2012-05-30 8 views
7

Предположим, у меня есть иерархия элементов, с ее корнем #root. Я могу использовать $('#root > * > *'), чтобы получить всех своих внуков. Есть ли способ сделать это, если у меня уже есть $('#root')?Селектор для внуков, или как привязать селектор к известному элементу

$('#root').find('* > *') определенно не так, поскольку он будет счастливо «начинать» с любого потомка для первой звезды, а не только из #root детей.

Есть ли какая-либо функция в jQuery, которая будет «привязывать» к текущему элементу, начиная с его детей или самого себя? Некоторое время это искажало меня, и я не мог найти ничего подобного в документах.

+0

'.find() ', возможно, самый раздражающий метод обхода jQuery. – BoltClock

ответ

13

Либо начать выражение найти с другим > (этот синтаксис documented):

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

Или позвоните .children() дважды: один раз для своих детей и снова для своих внуков:

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

Да, я знал о '.children()' вещи, но ... ну, не подходит то, что я делаю, я действительно хотел селектор. И селекторная вещь ... ничего себе, я никогда не думал попробовать это, это потрясающе. Любая идея, насколько она тверда? Я немного опасаюсь, что это недокументировано - работает сейчас, но как долго? – Amadan

+0

@ Амадан: Я понятия не имею об этом ... похоже, он работал уже довольно давно. – BoltClock

+0

Я обновил это сообщение, чтобы отразить, что эта функция теперь задокументирована. – JDB