【问题标题】:jquery hover remains hovered when cursor is moved away via mouse-wheel scrolling当光标通过鼠标滚轮滚动移开时,jquery hover 保持悬停状态
【发布时间】:2011-10-21 06:41:48
【问题描述】:

我不确定这是 jquery 函数的限制还是我的代码中的错误,但我可以在 http://api.jquery.com/hover/ 的示例中看到相同的行为

我的实现是我有一个弹出框,当鼠标悬停在产品项目上时显示,当鼠标悬停时隐藏。

问题是当鼠标悬停并显示弹出框时,如果我使用鼠标滚轮/触控板向下/向上滚动页面,而由于滚动,鼠标光标不再位于产品项目上,悬停-out 行为没有被检测到,并且弹出框仍然可见,因为它的位置是在悬停事件期间确定的,相对于产品在屏幕上的位置。

这有意义吗?有人可以帮忙吗?

【问题讨论】:

  • 我相信更多的是 JavaScript 限制,我敢肯定我之前在 StackOverflow 的某个地方看到过它。
  • 可能是浏览器问题?我现在在 FF 7 中尝试了这个,但我无法复制这个问题。你用的是什么浏览器?
  • @mydoghasworms:我可以在 Chrome 14 中复制错误
  • @mydoghasworms:WebKit (Safari, Chrome) 会这样做,只需将鼠标悬停在上面的“jquery”标签上,直到出现信息弹出窗口,然后滚开并且弹出窗口不会消失。
  • 哦,是的,就是这样:刚刚也在 Chrome 14 中尝试过,现在我可以看到它正在发生。

标签: jquery hover mouseover


【解决方案1】:

这是一个有点侵入性的解决方案,但它应该可以工作:

// The normal hover handler
$("#productElement").hover(function(){
  $("#otherElement").show();
},function(){
  $("#otherElement").hide();
});

// A global scroll handler that hides an specific
// element whenever the user scrolls.
$(document).scroll(function(){
  $("#otherElement").hide();
});

在上面的代码中,#productElement 是用户悬停到的标签,#otherElement 是悬停时弹出的对话框。这只是它如何工作的基础;你会根据你的代码调整它。

【讨论】:

  • 感谢大家的反馈,至少现在我知道这是 webkit 浏览器的 js 限制。
  • @Winterrain:欢迎您!一些与浏览器相关的错误真的很痛苦!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-29
  • 1970-01-01
  • 2021-11-15
  • 1970-01-01
相关资源
最近更新 更多