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')

Jquery:

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

正解は.parents('.container:first');感謝です

于 2013-03-26T03:47:47.673 に答える
0

本当に親divのみが必要な場合は、yes $(this).parents('。container')が機能します。最も近い要素を探し、それを兄弟にする場合(実際に達成しようとしていることのようです)、$(this).prev('。container')を使用できます。

于 2013-03-26T03:59:48.560 に答える