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

使用jQuery实现鼠标悬停添加CSS样式失效问题排查

解决jQuery hover功能失效的问题

嘿,我一眼就瞅出问题在哪儿啦!你的代码有两个关键问题导致hover功能没效果:

  • 脚本顺序搞反了:你把jQuery的业务代码写在了引入jQuery库的前面,浏览器是从上到下解析代码的,这时候执行$('#b').hover(...)的时候,$这个jQuery核心函数还没被定义呢,自然没法运行。
  • 没等DOM加载完成就执行代码:就算库的顺序对了,如果DOM元素还没渲染出来,jQuery也找不到#a和#b这两个div,绑定事件的操作等于白做。

给你修正后的完整代码,两种写法都能解决问题:

写法一:用$(document).ready()等待DOM加载

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
// 确保DOM完全加载后再执行代码
$(document).ready(function() {
  $('#b').hover(
    // 鼠标悬停时的回调
    function() { 
      $('#a').css({ 'background': '#ccc' }); 
    }, 
    // 鼠标移开时的回调
    function() { 
      $('#a').css({ 'background': 'initial' }); 
    }
  );
});
</script>
<div id="a">Div A</div>
<div id="b">Div B</div>

写法二:把脚本放在body末尾

这种写法利用浏览器的解析顺序,当执行脚本时,前面的DOM元素已经加载完成了:

<div id="a">Div A</div>
<div id="b">Div B</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
$('#b').hover(
  function() { 
    $('#a').css({ 'background': '#ccc' }); 
  }, 
  function() { 
    $('#a').css({ 'background': 'initial' }); 
  }
);
</script>
</body>

这样修改后,当你把鼠标悬停在Div B上时,Div A的背景就会变成灰色,移开鼠标后就会恢复初始状态啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:50:51