jQuery chaining parent(), есть ли более простой способ?

У меня есть такая разметка

<div id="some-id">
    <h2><a href="#">Title</a></h2>
</div>

и некоторые JQuery, как это

$(this).parent().parent().attr("id")

$(this) ссылается на тег 'a' внутри 'h2'

Есть ли более простой способ выбрать родительский div без использования parent() дважды. Я старался

$(this).parent("div").attr("id")

но это не сработало.

Спасибо

1 ответ

Решение

Ты можешь использовать .closest(), как это:

$(this).closest("div").attr("id")

Вы можете проверить это здесь. .parent("div") не так интуитивно понятен, как кажется, он получает только непосредственного родителя, если он соответствует селектору, .closest() лезет к родителям, пока не совпадет с селектором.

Обратите внимание, что (не относится к этому примеру), если this соответствует селектору, он возвращает этот элемент, он не начинается с первого родителя, он начинается с самого себя.

Другие вопросы по тегам