Как найти родителя с известным классом в 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 ответа:
предполагая, что
this
и.d
можно писать$(this).closest('.a');
The
closest
метод возвращает самый внутренний родитель элемента, который соответствует селектору.
передать селектор в jQuery родителям:
d.parents('.a').attr('id')
EDIT Хм, на самом деле ответ Slaks превосходит, если вы хотите только ближайший предок, который соответствует вашему селектору.
можно использовать parents () чтобы получить все родители с данным селектором.
описание: получить предков каждого элемент в текущем наборе совпадений элементов, дополнительно фильтруется с помощью селектор.
но parent () получит только первый родитель элемента.
описание: получить родителя каждого элемент в текущем наборе совпадений элементов, дополнительно фильтруется с помощью селектор.
jQuery parent () vs. parents ()
и .parentsUntil () что, я думаю, будет лучшим.
описание: получить предков каждого элемент в текущем наборе совпадений элементы, вплоть до, но не включая элемент соответствует селектору.