Может ли jQuery выполнить сложный выбор только на верхнем уровне? (a.k.a. «Как избежать цепочки детей») - PullRequest
1 голос
/ 12 мая 2010

В принципе, есть ли способ написать

a.children('.outer').children('.inner')

без промежуточного селектора? Я не могу написать

$('.outer > .inner', a)

, потому что я не хочу выполнять полный поиск по a - я знаю, что элементы .outer являются непосредственными потомками a.

Отчасти это вопрос "элегантности", но отчасти потому, что я стараюсь избегать "одноразовых" наборов элементов. Да, jQuery может фактически сделать то же самое, но у него больше шансов на оптимизацию (по крайней мере, в теории), когда он знает намерение полного запроса.

Ответы [ 2 ]

3 голосов
/ 12 мая 2010

Вы можете сделать это, чтобы начать с непосредственных детей, не выполняя полный поиск по .outer, чтобы начать:

$('> .outer > .inner', a)

Или, немного отличается, это:

a.find('> .outer > .inner')

Здесь вы можете увидеть демонстрацию работы обоих .

2 голосов
/ 12 мая 2010

Селектор ">" - это то, что вам нужно. Он выберет прямой дочерний элемент, а не потомков всех уровней: http://api.jquery.com/child-selector/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...