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

jQuery实现div hover切换后无法触发un-hover恢复显示如何解决?

问题根因

你的判断是准确的:jQuery的hide()方法本质是给元素设置display: none属性,被设置该属性的元素不会响应任何鼠标交互事件,因此绑定在第一个div上的移出类事件在元素隐藏后无法触发。

修复方案

给第二个div补充绑定mouseleave事件,鼠标离开第二个div时切换回初始显示状态即可,修正后的代码如下:

JS代码

$(document).ready(function(){
  $("#seconddiv").hide();
  $("#firstdiv").mouseenter(function(){
    $("#seconddiv").show();
    $("#firstdiv").hide();
  });
  $("#seconddiv").mouseleave(function(){
    $("#firstdiv").show();
    $("#seconddiv").hide();
  });
});

CSS语法修正

你提供的CSS代码存在语法错误,padding-bottom: 25px末尾的冒号需要修改为分号,否则该样式不会生效:

.fullwidth {
  width: 100%;
  padding-top: 25px;
  padding-bottom: 25px;
}

可选优化方案

如果两个div切换时存在间隙,容易触发误判的话,可以给两个div套一个始终可见的父容器,把交互事件绑定在父容器上,稳定性更高:

<div class="toggle-wrapper">
  <div id="firstdiv" class="fullwidth">
    <p>First Text</p>
  </div>
  <div id="seconddiv" class="fullwidth">
    <p>Second Text</p>
  </div>
</div>

对应JS代码可以简化为:

$(document).ready(function(){
  $("#seconddiv").hide();
  $(".toggle-wrapper").hover(
    function () {
      $("#seconddiv").show();
      $("#firstdiv").hide();
    },
    function () {
      $("#firstdiv").show();
      $("#seconddiv").hide();
    }
  );
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:57:01