Как найти родителя с известным классом в jQuery?


у меня есть <div> это имеет много других <div>s внутри него, каждый на другом уровне вложенности. Вместо того, чтобы дать каждому ребенку <div> идентификатор, я скорее просто даю корень <div> идентификатор. Вот пример:

<div class="a" id="a5">
  <div class="b">
    <div class="c">
      <a class="d">
      </a>
    </div>
  </div>
</div>

если я пишу функцию в jQuery, чтобы ответить на class d и я хочу найти идентификатор для своего родителя, class a, как бы я сделать это? Я не могу просто сделать $('.a').attr('id'); потому что есть несколько класс aы. Я мог бы найти его родителей Родительский идентификатор родителя, но это кажется плохим дизайном, медленным и не очень полиморфным (мне пришлось бы написать другой код для поиска идентификатора для класса c).

4 181

4 ответа:

предполагая, что this и .d можно писать

$(this).closest('.a');

The closest метод возвращает самый внутренний родитель элемента, который соответствует селектору.

передать селектор в jQuery родителям:

d.parents('.a').attr('id')

EDIT Хм, на самом деле ответ Slaks превосходит, если вы хотите только ближайший предок, который соответствует вашему селектору.

можно использовать parents () чтобы получить все родители с данным селектором.

описание: получить предков каждого элемент в текущем наборе совпадений элементов, дополнительно фильтруется с помощью селектор.

но parent () получит только первый родитель элемента.

описание: получить родителя каждого элемент в текущем наборе совпадений элементов, дополнительно фильтруется с помощью селектор.

jQuery parent () vs. parents ()

и .parentsUntil () что, я думаю, будет лучшим.

описание: получить предков каждого элемент в текущем наборе совпадений элементы, вплоть до, но не включая элемент соответствует селектору.

использовать .parentsUntil ()

$(".d").parentsUntil(".a");