代码之家  ›  专栏  ›  技术社区  ›  vol7ron

jQuery:悬停菜单-代码清理-保持菜单打开

  •  2
  • vol7ron  · 技术社区  · 14 年前

    我已经搜索过了,这个问题似乎被问了很多次,但是在我的例子中,我似乎无法让它起作用。

    下面是一些代码: http://jsfiddle.net/vol7ron/w8QsZ/2/

    我要找的是类似于 flowplayer tooltip ,其中:

    • 有一个触发器使菜单在悬停时出现
    • 离开触发器后菜单消失
    • 如果用户将鼠标悬停在菜单(或工具提示)上,则弹出窗口应保持打开状态

    我猜扳机是 hoverOut 应该打电话给 消失 使用 setTimeout() 稍有延迟,但菜单上 mouseenter() ,应清除超时。

    我还是jQuery的新手,不知道在哪里存储生成的timeoutID,在哪里调用它。

    注: 同一菜单将用于多个触发器。


    更新: 好吧,我有办法了: here
    有人能帮我把它清理干净,让它更有效率吗。更重要的是,我不想为超时ID使用globals。也许有更好的方法把它储存在物体里?

    1 回复  |  直到 14 年前
        1
  •  0
  •   Aaron Hathaway    14 年前

    我最近刚做了这样的事。我要做的是

    var timer = setTimeout(/*blah*/);
    $('#my_selector').data('timer') = timer;
    

    我将timeoutID放入该元素的数据中,然后每当以后需要对其进行处理时(clearTimeout),我就可以从那里获取它。

    笔记 我使用了这个方法,它对动态数量的元素起作用,这是我认为你想要的。如果你需要更多的解释请告诉我!