Подтвердить что ты не робот

JQuery ближайший исключить себя

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'));
    });
});
4b9b3361

Ответ 1

Правильный ответ .parents('.container:first'); thanks

Ответ 2

Вы можете пройти уровень выше, прежде чем пытаться найти предка .closest():

$(this).parent().closest('.container');

Ответ 3

Если вам действительно нужны только родительские div, то yes $(this).parents('. container') будет работать. Если вы хотите найти ближайший элемент и позволить ему быть родным братом (что кажется, возможно, это то, что вы на самом деле пытаетесь выполнить), вы можете использовать $(this).prev('. Container').