Ответ 1
Предполагая, что this
.d
, вы можете написать
$(this).closest('.a');
У меня есть <div>
, у которого есть много других <div>
внутри него, каждый на другом уровне вложенности. Вместо того, чтобы давать каждому дочернему элементу <div>
идентификатор, я скорее просто даю root <div>
идентификатор. Вот пример:
<div class="a" id="a5">
<div class="b">
<div class="c">
<a class="d">
</a>
</div>
</div>
</div>
Если я напишу функцию в jQuery, чтобы ответить на класс d
, и я хочу найти идентификатор для своего родителя, class a
, как бы я это сделал? Я не могу просто сделать $('.a').attr('id');
, потому что существует несколько классов a
s. Я мог найти родителей родителей родителей ID, но это кажется плохой дизайн, медленный и не очень полиморфный (мне пришлось бы написать другой код для поиска ID для класса c
).
Предполагая, что this
.d
, вы можете написать
$(this).closest('.a');
Передайте селектор функции jQuery parents:
d.parents('.a').attr('id')
EDIT Хм, на самом деле ответ Slaks превосходит, если вы хотите, чтобы ближайший предок соответствовал вашему селектору.
Вы можете использовать родители(), чтобы получить всех родителей с данным селектором.
Описание: Получить предков каждого элемент в текущем наборе согласованных элементы, необязательно отфильтрованные селектор.
Но parent() получит только первый родительский элемент.
Описание: Получить родительский элемент каждого элемент в текущем наборе согласованных элементы, необязательно отфильтрованные селектор.
И есть . parentsUntil(), который, я думаю, будет лучшим.
Описание: Получить предков каждого элемент в текущем наборе согласованных элементов, вплоть до элемент, соответствующий селектору.