【问题标题】:My broken jQuery slide down menu using hover()使用 hover() 我损坏的 jQuery 向下滑动菜单
【发布时间】:2010-06-21 13:58:39
【问题描述】:

我有一个 html 链接,它使用 hover()(嗯,hoverIntent 插件......但同样的区别)来触发 div 向下滑动(我为 CSS 顶部属性设置动画)。

这一切都工作得很好,看起来很完美,除了当鼠标离开超链接并移到包含菜单链接的 div 上时,它会立即触发 mouseleave 事件并且菜单消失。

显然,在注意到这个“错误”之前,我无休止地调整了它,我觉得有点愚蠢。

问题是:我真的想不出一种方法来达到我想要的效果。

这是我作品的链接: http://clifgriffin.com/blockade

各位专家,您将如何完成我正在尝试做的事情?

我试图将鼠标进入和鼠标离开功能分开...将前者添加到链接中,将后者添加到 div 中,但这并不完全正确,即使我解决了这个怪癖,它也不会t 当您悬停链接然后向上移动时正确触发鼠标离开。

基本上,只要将鼠标从链接移动到菜单不会触发 mouseleave,我就可以了。

我真的不想为每个菜单设置一个布尔值,并在菜单周围的每个元素上设置一堆事件来触发某些操作。这必须比这更简单。

有什么想法吗?

提前致谢, 克里夫

【问题讨论】:

  • P.S.在 Firefox 以外的浏览器中存在 CSS 显示问题,我还没有修复,但是,基本的顶部菜单问题在所有浏览器中都是相同的。

标签: javascript jquery jquery-plugins


【解决方案1】:

试试这个:

var accoIn = function(){
 topSlideIn($("#top_menu_slideout .aco"));
 $("#top_menu_links .accommodations").unbind("mouseover");      
};

$("#top_menu_links .accommodations").hoverIntent(accoIn,function(){});

$("#top_menu_slideout .aco").hoverIntent(function(){},function(){
 topSlideOut($("#top_menu_slideout .aco"));     
 $("#top_menu_links .accommodations").hoverIntent(accoIn,function(){});
});

【讨论】:

  • 实际上效果很好。从触发滑出的链接向上滑动显然不会触发它缩回,但我可以通过将一些事件绑定到顶部 div 来解决这个问题。谢谢你。这有点像我的想法,但更优雅。
  • 好的,仍然无法正常工作。基本上,我需要将鼠标悬停在#top_hide 上以使展开的菜单缩回。我还需要将鼠标悬停在扩展菜单以外的菜单上以产生相同的效果。我试图通过以下方式做到这一点: a) 当它向下滑动时将全局 lastTrigger 设置为当前菜单。 b) 当#top_hide 悬停时收回lastTrigger。 c) 当任何其他菜单项悬停在上方时收回 lastTrigger。 d) 读取与您的代码类似的各个阶段的事件。但是,我的行为很奇怪。而且代码有点失控了。有任何想法吗?克里夫
  • 好的,我明天去看看……主要问题是这个标签式结构与 hoverIntent 结构的“哲学”并不真正兼容。考虑重新设计它...
  • 我实际上可以通过设置一个计时器来解决这个问题。定时器 1 秒后自动收回菜单。将鼠标悬停在菜单 div 上会取消计时器。我同意......这是一种混乱的方法,但至少它是有效的。我发现 webkit 浏览器在处理事件的方式上并不一致……弄清楚这一点会很有趣。 :(
  • 很高兴看到你挺身而出 :) 这个计时器的东西也闻起来像 hack,但至少它是有效的。是的,浏览器不一致是一件很容易接受的事情。
猜你喜欢
  • 1970-01-01
  • 2014-11-23
  • 1970-01-01
  • 2020-06-21
  • 2013-09-21
  • 1970-01-01
  • 1970-01-01
  • 2020-03-28
  • 1970-01-01
相关资源
最近更新 更多