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

如何实现鼠标悬停.header_kosar_link及移入.cart_hover时保持该div显示?

解决购物车悬浮层的持续显示问题

你的问题在于当前代码只监听了.header_kosar_link的鼠标进出事件——当鼠标从链接移到.cart_hover时,会触发链接的mouseout,直接隐藏悬浮层,而此时鼠标还没来得及触发悬浮层的事件,导致悬浮层消失。下面给你两种常用的解决方案:

方案1:使用父容器统一监听(推荐)

把链接和悬浮层放在同一个父容器里,监听父容器的mouseenter和mouseleave事件,这样只要鼠标在父容器范围内,悬浮层就会保持显示。

修改后的HTML结构

<div class="cart-container">
  <div class="col-md-2 d-flex justify-content-center justify-content-md-end align-items-center header_div">
    <a href="https://projektar.hu/kosar" title="Kosár" class="header_kosar_link d-flex align-items-center">
      <i class="fa fa-shopping-basket fejlec_kosar_ikon" aria-hidden="true"></i>
      <span id="header_kosar_text" class="header_kosar_text">Cart</span>
    </a>
  </div>
  <div class="clearfix"></div>
  <div class="cart_hover">Cart Hover</div>
</div>

对应的jQuery代码

$('.cart-container').on('mouseenter', function() {
  $('.cart_hover').show(); // 等价于.css('display', 'block'),更简洁
}).on('mouseleave', function() {
  $('.cart_hover').hide(); // 等价于.css('display', 'none')
});

这个方案逻辑最清晰,也最不容易出问题,因为父容器的鼠标事件会覆盖内部所有元素的范围。

方案2:延迟隐藏+双元素监听(无需修改HTML结构)

如果不想调整HTML结构,可以给隐藏操作加一个短暂延迟,同时监听悬浮层的鼠标进出事件,当鼠标移到悬浮层时清除延迟,避免悬浮层被意外隐藏。

修改后的jQuery代码

let hoverTimeout; // 用来存储延迟定时器的ID

// 当鼠标进入链接或悬浮层时,显示悬浮层并清除延迟
$('.header_kosar_link, .cart_hover').on('mouseenter', function() {
  clearTimeout(hoverTimeout);
  $('.cart_hover').show();
});

// 当鼠标离开链接或悬浮层时,启动延迟隐藏
$('.header_kosar_link, .cart_hover').on('mouseleave', function() {
  hoverTimeout = setTimeout(function() {
    $('.cart_hover').hide();
  }, 200); // 200毫秒的延迟,足够鼠标从链接移到悬浮层
});

这个方案的核心是利用延迟给鼠标移动留缓冲时间,确保鼠标从链接移到悬浮层时,悬浮层不会被立刻隐藏。

另外,建议你把CSS里的display:none改成用jQuery的show()/hide()来控制,这样代码更简洁易读,而且jQuery会自动处理元素的初始状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 00:09:10