【问题标题】:How do I stop a mouseleave event when entering another element?输入另一个元素时如何停止 mouseleave 事件?
【发布时间】:2013-05-30 12:18:00
【问题描述】:

我怎样才能做到这一点,当我将鼠标悬停在我的时间线项目之一并导航到下拉菜单时,mouseleave 事件将不会触发并且菜单将继续显示。只有在离开菜单和时间线项目时,我才希望菜单不显示。

mouseenter 和 mouseleave 事件被设置为:

$(".trek_timeline_day .activity_link") 

【问题讨论】:

  • 你能给我看看这个的 jsfiddle

标签: javascript jquery


【解决方案1】:

将时间线和菜单放在一个div中,并为整个div注册事件。所以是这样的:

<div class="wholediv">
    <div class="timeline">...</div>
    <div class="menu">...</div>
</div>

然后:

$( '.wholediv'  ). etc.

【讨论】:

  • 很遗憾,由于其他限制,我无法做到这一点。如果我这样做了,我的菜单会被一个溢出隐藏的 css 属性切断。
  • 我认为无论如何你都可以覆盖这个 css 属性,不是吗?
  • 不,我不能,因为它是我时间线的子元素。
  • @JasonBiondo:当然可以。你只需要重构你的代码,让它全部匹配!正如我之前所说,将它放在 jsfiddle 或 jsbin 或其他东西中,我非常乐意为您提供帮助。
  • @JasonBiondo:所以为菜单添加一个新类并更改该类的 css 属性,这将覆盖时间线属性。
【解决方案2】:

我建议实现某种形式的 jQuery Menu Aim,类似于 Ben Kaman 的亚马逊智能菜单 - http://bjk5.com/post/44698559168/breaking-down-amazons-mega-dropdown

【讨论】:

    【解决方案3】:

    如果你把.hover_info div 放在.activity_link 里面(所以每个.activity_link 里面都有一个.hover_info),当你输入.hover_info div 时mouseleave 事件不会被触发,因为它是在.activity_link 元素内。

    【讨论】:

    • 正如另一条评论中提到的,我不能这样做,因为我的菜单会被切断。还有其他解决方案吗?
    • 如果这是一个问题,我建议你重构你的代码,因为如果你只是以适当的方式编写你的 html 和 css,我想不出有什么问题。如果您需要帮助,请将其放在 jsbin 或 jsfiddle 或其他东西上,我很乐意为您提供帮助。
    猜你喜欢
    • 2012-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多