Ответ 1
Правильный ответ .parents('.container:first');
thanks
closest()
получит первый элемент, который соответствует селектору, проверив сам элемент и пройдя через его предков в дереве DOM. Но я хочу знать, есть ли какой-нибудь способ получить результат, исключая самого себя (я имею в виду просто получить его родителей).
Позвольте мне взять пример. Пожалуйста, просмотрите это.
<div id='div1' class="container">
<div id="div2" class="container">
<!--many nested div.container as it directly or indirectly children -->
</div>
<div id="div3" class="container">
<!--many nested div.container as it directly or indirectly children -->
</div>
</div>
$(function() {
$('div.container').on('mouseover', function(e){
//I only want to select the first parent with the class container.
//closest include the this element.
console.log($(this).closest('.container').attr('id'));
});
});
Правильный ответ .parents('.container:first');
thanks
Вы можете пройти уровень выше, прежде чем пытаться найти предка .closest()
:
$(this).parent().closest('.container');
Если вам действительно нужны только родительские div, то yes $(this).parents('. container') будет работать. Если вы хотите найти ближайший элемент и позволить ему быть родным братом (что кажется, возможно, это то, что вы на самом деле пытаетесь выполнить), вы можете использовать $(this).prev('. Container').