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

如何使用jQuery实现多个li元素悬停移出后独立延时重置背景色功能

问题根因

原有代码使用全局唯一的timer变量存储定时器ID,任意li触发移出悬停逻辑时都会覆盖全局timer的取值,导致其余li的定时器ID丢失无法触发,最终仅最后一个移出悬停的li可以正常恢复背景色。

修复方案

利用jQuery的.data()方法为每个li元素单独存储专属的定时器ID,各元素的计时逻辑完全独立互不干扰,无需全局变量存储定时器。

修复后的JS代码

$(document).ready(function () {
  $("li").hover(
    function () {
      // 仅清除当前悬停li自身绑定的定时器
      clearTimeout($(this).data('resetTimer'));
      $(this).css("background-color", "red");
    },
    function () {
      const $currentLi = $(this);
      // 将当前li的定时器ID存储到自身自定义数据中
      const resetTimer = setTimeout(function () {
        $currentLi.css("background-color", "transparent");
      }, 1000);
      $currentLi.data('resetTimer', resetTimer);
    }
  );
});

说明

  • HTML代码无需修改,保持原有结构即可正常运行
  • 修复后各li的背景恢复计时完全独立,快速切换多个li悬停状态时,每个li都会按照自身移出的时间倒计时恢复背景色,不会出现之前遗漏重置的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 14:18:01