Jquery 获取元素的特定父级
我正在使用此代码在一个“.grid”中的所有元素上获得悬停覆盖,但悬停的元素除外: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
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')在哪里?在标记上,我删除了这个示例的类,我的错了。