You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jquery鼠标悬停显示对应元素问题求助:each循环失效

问题分析与解决方案

我有3个可见元素和3个隐藏元素,希望鼠标悬停每个可见元素时仅显示对应的单个隐藏元素。但目前鼠标悬停时会显示全部3个隐藏元素,我使用了jQuery each函数却无效,请问问题出在哪?


原代码

JavaScript

$(document).ready(function(){

    $( ".thumbnail-top" ).each(function() {
        $( this ).mouseover(function(){
      $(".productImageBox-1").fadeIn('400');
      });
      $( this ).mouseout(function(){
        $(".productImageBox-1").fadeOut('400');
        });

      });

});

CSS

.thumbnail-top {
position:relative;
float:left;
margin:5px;
}

.product-thumbnail {
width:200px;
height:100px;
display:block;
padding:1rem;
color:#fff;
text-align:center;
cursor:pointer;
}

.productImageBox-0 {
background:blue;
}
.productImageBox-1 {
background:red;
position:absolute;
top:0;
left:0;
z-index:1;
display:none;
}

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="thumbnail-top">
<a class="product-thumbnail productImageBox-0">I AM A BLUE BOX</a>
<a class="product-thumbnail productImageBox-1">NOW I AM A RED BOX</a>
</div>
</div>

<div class="thumbnail-top">
<a class="product-thumbnail productImageBox-0">I AM A BLUE BOX</a>
<a class="product-thumbnail productImageBox-1">NOW I AM A RED BOX</a>
</div>
</div>

<div class="thumbnail-top">
<a class="product-thumbnail productImageBox-0">I AM A BLUE BOX</a>
<a class="product-thumbnail productImageBox-1">NOW I AM A RED BOX</a>
</div>
</div>

问题根源

你用了each循环给每个.thumbnail-top绑定事件,但事件内部的$(".productImageBox-1")是全局选择器——它会选中页面上所有带这个类的元素,所以鼠标悬停时所有隐藏的红色盒子都会一起显示,和循环本身无关。


修正方案

核心是把选择范围限定在当前触发事件的.thumbnail-top容器内,同时修复HTML里多余的闭合标签:

修正后的JavaScript

$(document).ready(function(){
    $(".thumbnail-top").each(function() {
        $(this).mouseover(function(){
            // 只查找当前容器内的目标隐藏元素
            $(this).find(".productImageBox-1").fadeIn(400);
        });
        $(this).mouseout(function(){
            $(this).find(".productImageBox-1").fadeOut(400);
        });
    });
});

修正后的HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="thumbnail-top">
    <a class="product-thumbnail productImageBox-0">I AM A BLUE BOX</a>
    <a class="product-thumbnail productImageBox-1">NOW I AM A RED BOX</a>
</div>

<div class="thumbnail-top">
    <a class="product-thumbnail productImageBox-0">I AM A BLUE BOX</a>
    <a class="product-thumbnail productImageBox-1">NOW I AM A RED BOX</a>
</div>

<div class="thumbnail-top">
    <a class="product-thumbnail productImageBox-0">I AM A BLUE BOX</a>
    <a class="product-thumbnail productImageBox-1">NOW I AM A RED BOX</a>
</div>

CSS无需修改

保持原CSS即可。


内容的提问来源于stack exchange,提问作者Designer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 07:35:16