Как я могу выбрать элементы, живущие в определенном диапазоне иерархии DOM? - PullRequest
0 голосов
/ 23 июля 2010

У меня есть элемент DOM C, который является потомком элемента DOM A.Между ними есть несколько слоев, один из которых является классом элемента с именем B.

Если у меня есть jQuery("#A") и jQuery("#C), как я могу найти родительский элемент C с классомB, который также является потомком A?

Если я использую parents() из C, тогда я мог бы потенциально получить любые элементы с классом B, которые выше A, чтоЯ не хочу.Если я использую find() из A, тогда я могу получить элементы ниже C, которые мне не нужны.

Количество слоев между каждым из интересующих меня элементов неизвестно.Хотя в примере показан один слой, который позволил бы мне сделать .children().children(), я не могу быть уверен, что это всего лишь 2 уровня.

например

...
<div id="A">
 <div>
   <div class="B">
     <div>
       <div id="C">...</div>
     </div>
   </div>
 </div>
</div>

Ответы [ 2 ]

1 голос
/ 23 июля 2010
$('#C').closest('.B').filter(function() {
    return $(this).closest('#A').length;
});

Вам не нужен фильтр, если вы знаете, что ближайший div.B всегда будет ниже # A

1 голос
/ 23 июля 2010

в этой ситуации вам нужно .closest()

$('#C').closest('.B') // would get the closest parent(.B) of a child(#C)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...