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

如何修复点击切换内容时动态高度tooltip意外消失的问题

问题说明

悬浮在触发区域时会弹出tooltip,tooltip内置折叠/展开列表功能,点击View Less折叠内容时,tooltip高度缩小导致鼠标脱离tooltip区域,触发hover移出事件直接隐藏tooltip,导致折叠功能无法正常使用,且UX要求不能将View More按钮放在tooltip顶部。

修复方案

核心思路是给tooltip的隐藏逻辑加短延时防抖,规避高度收缩时的误触发问题,无需修改原有UI布局,完全保留悬浮交互逻辑。

修改后的JS代码

原有CSS和HTML代码无需修改,直接替换JS逻辑即可:

// 新增隐藏定时器变量
let hideTimer = null;
let isShow = false;

$(".title").hover(
  (e) => {
    // 移入时清除待执行的隐藏任务
    clearTimeout(hideTimer);
    $(".tooltip").show();
  },
  (e) => {
    // 移出时加250ms延时再执行隐藏,覆盖高度收缩的间隙
    hideTimer = setTimeout(() => {
      $(".tooltip").hide();
    }, 250);
  }
);

$(".tooltip").hover(
  (e) => {
    // 移入tooltip时同样清除隐藏任务
    clearTimeout(hideTimer);
    $(".tooltip").show();
  },
  (e) => {
    hideTimer = setTimeout(() => {
      $(".tooltip").hide();
    }, 250);
  }
);

$("#view_toggle").on("click", (e) => {
  if (isShow) {
    $(".li_hide").hide();
    $("ul li:last").text("View More");
  } else {
    $(".li_hide").show();
    $("ul li:last").text("View Less");
  }
  isShow = !isShow;
});

方案说明

  • 250ms的延时极短,用户感知不到延迟,完全不影响正常悬浮移出的隐藏体验
  • 只要用户鼠标在延时范围内回到tooltip区域,就会清除隐藏定时器,不会出现误隐藏
  • 无需调整任何CSS和HTML结构,符合UX设计要求
  • 实现成本低,逻辑简单易维护

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 08:06:03