jQuery предлагает несколько вариантов для этого. Самый простой из них:
$(selector).parent();
Это вернет непосредственный родительский узел выбранного элемента (или родительский элемент каждого элемента в наборе, если селектор соответствует более чем одному).
Следующая опция:
$(selector).parents();
Для каждого элемента в соответствующем наборе будет возвращено все родители (и дедушки, бабушки, дедушки и бабушки и т. Д.) Этого элемента, вплоть до корневого узла документа (<html>
для документов HTML). Вы можете передать этот селектор, чтобы получить только совпадающие элементы, например,
$(selector).parents('div'); // only parents that are divs
Последний способ - использовать:
$(selector).closest(otherSelector);
Это немного отличается, потому что он вернет первый элемент, соответствующий второму селектору, начиная с вызывающего набора. Так что, если у меня есть это:
<div>
<ul>
<li>
<p id="foo">foo</p>
</li>
</ul>
</div>
и я сделаю $('#foo').closest('p')
, я вернусь к набору jQuery, содержащему p#foo
. Если я вместо этого сделаю $('#foo').closest('ul')
, я верну элемент <ul>
, как и следовало ожидать.