it-roy-ru.com

Как найти первый родительский элемент в jquery

Рассмотрим ниже HTML -

<div class="container1">
   <div class="container2">
      <div class="container3">
         <div class="container4">
             <div class="element">
             ...
         </div>
      </div>
   </div>
</div>

если я хочу получить элемент <div class="element"> и у меня есть ссылка на container1. В JQuery, что я делаю,

$(".container1").find(".element")

вместо -

$(".container1").children().children().children().find(".element")

Это процесс поиска любого дочернего элемента, когда у меня есть ссылка на любой из родительских элементов. Но вместо этого, когда у меня есть ссылка на дочерний элемент и я хочу получить родительский элемент, каждый раз, когда мне нужно подняться на один уровень вверх -

$(".element").parent().parent().parent().parent()

и я не могу так делать -

$(".element").findParent()

Я не сталкивался с каким-либо методом, как findParent () в jquery. Есть ли то, о чем я не знаю? Или его там нет по какой-то причине?

11
Ashwin
$(".element").parents();

даст всем родителям .element(включая html и body)

ДЕМО

Чтобы найти какого-либо конкретного родителя, предположим, что container1 затем

$('.element').parents('.container1')

ДЕМО

jQuery .parents() обычно находит всех родителей, но если вы передали селектор, он будет искать его.

27
thecodeparadox

просто используйте

$(".element").closest('#container1');

если предок с этим id не найден, то 

$(".element").closest('#container1').length будет 0

14
fcalderan

Чтобы получить первого родителя лично, я использую следующую конструкцию:

var count_parents = $(".element").parents().length;
$(".element").parents().eq(count_parents - 1);

Надеюсь, это будет кому-то полезно.

1
Paul Basenko