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

使用jQuery为多个相同id的div绑定hover事件仅第一个生效如何解决

问题原因

HTML 规范要求同一个页面内 id 属性必须唯一,重复 id 属于非法结构。jQuery 用 ID 选择器$("#title")、$("#source")时,只会返回页面中第一个匹配的元素,所以你写的事件只会绑定到第一个id="title"的 div,触发时也只会显示第一个id="source"的内容。

解决方案

优先把重复的 id 改为 class,符合规范的同时也能实现需求:

1. 修改HTML结构

把原来的id="title"改为class="title",id="source"改为class="source":

<div class="title col-md-3">
     <div class="source" style="display:none">Hidden Text</div>
</div>
<div class="title col-md-3">
     <div class="source" style="display:none">Hidden Text</div>
</div>
<div class="title col-md-3">
     <div class="source" style="display:none">Hidden Text</div>
</div>

2. 修改JS逻辑

用类选择器绑定事件,触发时通过$(this)定位当前被 hover 的元素,再查找它内部的隐藏层:

<script>
$(document).ready(function(){
    // 给所有.title绑定事件
    $(".title").mouseenter(function(){
        // 找当前hover的.title内部的.source
        $(this).find(".source").fadeIn( 200 );
    });

    $(".title").mouseleave(function(){
        $(this).find(".source").fadeOut( 200 );
    });
});
</script>

不推荐的兼容方案

如果因为特殊原因不能修改 id 属性,可以用属性选择器匹配所有同 id 元素,但不符合规范,不建议长期使用:

$(document).ready(function(){
    $("[id='title']").mouseenter(function(){
        $(this).find("[id='source']").fadeIn( 200 );
    });
    $("[id='title']").mouseleave(function(){
        $(this).find("[id='source']").fadeOut( 200 );
    });
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 07:27:01