Jquery 获取元素的特定父级

Jquery 获取元素的特定父级,jquery,performance,Jquery,Performance,我正在使用此代码在一个“.grid”中的所有元素上获得悬停覆盖,但悬停的元素除外: var galleryGrid = $('.grid'), galleryImg = $('a.img-to-bg'), galleryImgOverlay = $('.overlay-wrapper'); // Overlay on hover gallery galleryImg.on({ mouseenter: function(){ $(this).find(gal

我正在使用此代码在一个“.grid”中的所有元素上获得悬停覆盖,但悬停的元素除外:

var galleryGrid = $('.grid'),
    galleryImg = $('a.img-to-bg'),
    galleryImgOverlay = $('.overlay-wrapper');
// Overlay on hover gallery
galleryImg.on({
    mouseenter: function(){
        $(this).find(galleryImgOverlay).addClass('hovered');
        //$(this).parentsUntil(galleryGrid).parent().find(galleryImgOverlay).not('.hovered').css({
        $(this).parents('.grid').find(galleryImgOverlay).not('.hovered').css({
            'background': 'rgba(0, 0, 0, 0.5)'
        });
        return false; 
    },
    mouseleave: function(){
        $(this).find(galleryImgOverlay).removeClass('hovered');
        //$(this).parentsUntil(galleryGrid).parent().find(galleryImgOverlay).css({
        $(this).parents('.grid').find(galleryImgOverlay).css({
            'background': 'rgba(0, 0, 0, 0)'
        });
        return false; 
    }
});
所以,我的问题是:什么是获得特定父母的正确方法

我找到了两种方法:

$(this).parents('.grid').find(galleryImgOverlay).css({

$(this).parentsUntil(galleryGrid).parent().find(galleryImgOverlay).css({
并且,当我在第一个示例中使用var galleryGrid时,console.log的输出与我只编写parents()时的输出相同。为什么呢

这是html代码:

<!-- Section Content -->
<div class="container margintop80">

    <!-- List of Galleries -->
    <ul class="grid">

        <!-- Gallery A -->
        <li class="toAnimateToo">

            <a href="..." class="img-to-bg">
                <div class="overlay-wrapper">
                    <div class="overlay-inner">
                        <div class="center">
                            <div class="btn btn-full-full"></div>
                        </div>
                    </div>
                </div>
            </a>

        </li>
    </ul>
</div>


如果它不是直接父级,我将使用
最近的()
向上遍历DOM树,并返回与传递的表达式匹配的第一个(单个)祖先:

$(this).closest('.grid').find(galleryImgOverlay).css({

无需冒泡到父级,只需使用
.find()
,因为
覆盖包装器
$(this)的子级。最近的(.grid”)
@guradio我在一个网格中有多个库,我需要在所有库中获得所有覆盖包装器。是的,这也很有效。我只是好奇,这被认为是获得特定父母的最佳方式吗?如果你想要直系父母,你可以使用这个trasversing祖先之一:如果不是直系父母,最好使用最近的()谢谢!还有最后一个问题:为什么会这样:“$(this).parents('.grid').find(GalleryMgOverlay).css({”与:“$(this).parents(galleryGrid).find(GalleryMgOverlay).css({”?html标记中的$('a.img-to-bg')在哪里?在标记上,我删除了这个示例的类,我的错了。