【问题标题】:jQuery: mouseenter/mousemove/mouseover not recognized with small div and fast mouse movementjQuery: mouseenter/mousemove/mouseover 无法识别小 div 和快速鼠标移动
【发布时间】:2013-02-22 08:05:39
【问题描述】:

我有一个 width:5pxheight:400px 的 div(例如)。 如果我想在这个 div 悬停时触发一个函数,当我将鼠标移动得太快时无法识别事件(如果我使用 mouseover/mouseenter/mousemove 无关紧要)。

您可以在此处查看一个工作示例:http://jsfiddle.net/2YZvk/

这是我的功能:

jQuery(document).ready(function(){
    jQuery('.hover_test').bind('mouseenter',function(){
        jQuery(this).css('background-color','#30a900');
    });
});

是否有可能以某种方式触发此事件,即使我将鼠标移动得太快?使 div 更宽不是一种选择...

【问题讨论】:

  • 您也可以使用“jQuery”的简写符号“$”来节省自己的打字时间$('.hover_test').bind...
  • 我知道,但我正在使用其他一些库,使用“jQuery”而不是“$”对我来说是最安全的编码方式;)
  • 您可以将 jQuery 代码包装到 (function($){ ... })(jQuery),这将保证 $ 可用并且不会弄乱其他库。
  • 是的,我也知道,但是我的一些脚本在多个站点上使用,我与社区共享它们 - 使用 jQuery 而不是 $ 对我来说没问题,你知道第一个第二次阅读脚本它是一个 jQuery 函数:-)

标签: jquery mouseover


【解决方案1】:

这只是“浏览器的工作原理”;它根本不会针对您触摸的每个像素触发事件,而是针对每 x 毫秒。它会检查指针先前位置的位置是否不同,然后会触发该事件。这是通过操作系统处理的。

this changed version of your JSFiddle 上快速移动鼠标。并非所有条形都会直接着色:仅在浏览器中定义的 x 毫秒数之后。

【讨论】:

  • 我需要这个功能的主要原因是在一个大的div中创建一个触发区域,看看鼠标从哪一侧来。目前我正在使用 event.offset 方法,但它有点错误,所以我正在寻找一种“更好”的方式来获取事件“鼠标来自顶部”,“鼠标来自左边”,...
  • 我相信限制更深,在操作系统级别。浏览器每隔一定时间从操作系统接收鼠标位置并在这些点触发事件。
  • @Patrick 如果这就是你想要的,你可能想问一个不同的问题,因为这与这个问题无关。
  • @Juhana 没错,我刚刚检查了 Chromium 源代码,鼠标事件由操作系统处理。谢谢!
  • @MarcoK,是的,你是对的,我会为此开一个额外的问题。
【解决方案2】:

当你将鼠标移动到快时,速度是(例如)5,并且 5 + 5 + 5 + 5 = 20,所以你可以触摸的步数是 5、10、15、20,但是如果 div是在 7、14、18 它不会发生,它只是它的工作方式

【讨论】:

  • 所以没有机会使用小于(例如)width:20px 的 div 触发函数?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-07
  • 1970-01-01
  • 2011-08-11
  • 1970-01-01
  • 2011-11-09
相关资源
最近更新 更多