45

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

4 回答 4

108

您可以在尝试找到.closest()祖先之前遍历一个级别:

$(this).parent().closest('.container');
于 2013-03-26T03:38:03.767 回答
3

香草js:

el.parentElement.closest('.container')

查询:

el.parent().closest('.container');
于 2019-08-11T10:08:26.690 回答
1

正确答案是.parents('.container:first');谢谢

于 2013-03-26T03:47:47.673 回答
0

如果你真的只想要父 div,那么 $(this).parents('.container') 会起作用。如果您想寻找最接近的元素并允许它成为同级元素(这似乎是您实际想要完成的),您可以使用 $(this).prev('.container')。

于 2013-03-26T03:59:48.560 回答