3 回答
TA贡献1871条经验 获得超13个赞
您不需要知道该元素是否存在;您可以简单地找到选择器的结果,如果与选择器不匹配,则不会发生任何事情。在来自同一图像的零件中:addClassmouseleaveremoveClass
$('.menu li').each(function() {
$(this).hover(function() {
var el = $(this).attr('data-img');
$('.banners').find('[data-img=' + el + ']').addClass('foo');
},
function() {
var el = $(this).attr('data-img');
$('.banners').find('[data-img=' + el + ']').removeClass('foo');
});
});
img {
opacity: 0.3;
}
.foo {
opacity: 1.0;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul class="menu">
<li data-img="1">Demo</li>
<li data-img="2">Demo</li>
<li data-img="3">Demo</li>
<li data-img="4">Demo</li>
</ul>
<div class="banners">
<img src="https://via.placeholder.com/150/0000FF" data-img="1" />
<img src="https://via.placeholder.com/150/00FF00" data-img="2" />
<img src="https://via.placeholder.com/150/FF0000" data-img="4" />
</div>
TA贡献1853条经验 获得超18个赞
如果要重置其他图像的类“foo”(如果 el2 存在),如果不存在,则类 “foo” 应位于属性等于 el 的最后一个图像中,则可以这样操作:data-img
$('.menu li').each(function() {
$(this).hover(function() {
var el = $(this).attr('data-img');
var el2 = $('.banners').find('[data-img=' + el + ']');
if (el2.length) {
let images = $('.banners img');
images.each(function() {
$(this).removeClass('foo');
});
el2.addClass('foo');
}
},
function() {});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul class="menu">
<li data-img="1">Demo</li>
<li data-img="2">Demo</li>
<li data-img="3">Demo</li>
<li data-img="4">Demo</li>
<li data-img="5">Demo</li>
</ul>
<div class="banners">
<img src="https://dummyimage.com/100x100/000/fff" data-img="1" />
<img src="https://dummyimage.com/100x100/000/fff" data-img="2" />
<img src="https://dummyimage.com/100x100/000/fff" data-img="3" />
<img src="https://dummyimage.com/100x100/000/fff" data-img="4" />
</div>
TA贡献1825条经验 获得超6个赞
你可以做这样的事情:
$('.menu li').each(function(){
$(this).hover(function(){
let img = $(this).data('img');
let bannerImg = $('.banners').find(`img[data-img="${img}"]`);
if (bannerImg.length) {
bannerImg.addClass('foo');
}
}, function() {
let img = $(this).data('img');
let bannerImg = $('.banners').find(`img[data-img="${img}"]`);
if (bannerImg.length) {
bannerImg.removeClass('foo');
}
});
});
希望它会起作用。
添加回答
举报