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

JQuery实现Div鼠标悬停时固定单一随机颜色的技术咨询

解决鼠标悬停时固定随机颜色的问题

完全可以实现这个需求!你的原代码问题出在mouseover事件上——这个事件在鼠标在元素内部移动时会反复触发,所以每次移动都会重新生成颜色。我们只需要做两个小修改就能搞定:

修改思路

  1. 把mouseover换成mouseenter:这个事件只会在鼠标首次进入元素时触发一次,元素内部移动不会重复触发,刚好符合你“悬停期间颜色固定”的要求。
  2. 用$(this)代替$('.box'):确保只修改当前悬停的那个div,避免多个.box元素时互相影响。

修改后的完整代码

JavaScript

$(document).ready(function(){
  $('.box').mouseenter(function(){
    var back = ["#B98B91","#A5465F","#A31E64","#F4C181","#F28C54","#F39131"];
    var color = back[Math.floor(Math.random() * back.length)];
    // 只修改当前悬停的box元素
    $(this).css("background-color", color);
  });
});

CSS

.box {
  border: solid;
  padding: 1rem; /* 加个内边距方便测试悬停效果 */
}

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="box">
  <p>BLA BLA BLA</p>
</div>
<!-- 如果有多个box,每个都会独立生成随机色 -->
<div class="box">
  <p>ANOTHER BOX</p>
</div>

额外优化(可选)

如果你希望鼠标离开后,元素恢复原来的颜色,可以再加一个mouseleave事件:

$('.box').mouseleave(function(){
  $(this).css("background-color", ""); // 清空背景色,恢复默认
});

这样每次鼠标进入.box时,会随机选一个颜色并保持到鼠标离开,完美符合你的需求~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 11:12:37