Javascript 什么';这是';鼠标';和';单击';事件?
使用jQuery,我经常喜欢将Javascript 什么';这是';鼠标';和';单击';事件?,javascript,jquery,Javascript,Jquery,使用jQuery,我经常喜欢将mousedown和mouseup事件与可按下按钮结合使用 然而,在每种情况下,我都使用了mouseup事件,绑定click事件似乎会产生相同的结果 以下两种方法之间是否存在实质性差异 // Method 1 $('.myButton').bind('click', callback); // Method 2 $('.myButton').bind('mouseup', callback); 请注意,我正在寻求关于使用这两种方法之间差异的技术解释。这与标记为重
mousedown
和mouseup
事件与可按下按钮结合使用
然而,在每种情况下,我都使用了mouseup
事件,绑定click
事件似乎会产生相同的结果
以下两种方法之间是否存在实质性差异
// Method 1
$('.myButton').bind('click', callback);
// Method 2
$('.myButton').bind('mouseup', callback);
请注意,我正在寻求关于使用这两种方法之间差异的技术解释。这与标记为重复的问题无关:通过鼠标悬停事件,您可以单击屏幕上的其他位置,按住单击按钮,将指针移动到鼠标悬停元素,然后释放鼠标指针 click事件要求在该元素上发生mousedown和mouseup事件 通常的期望是单击需要mousedown和mouseup事件,因此我建议使用click事件
从可能的重复情况来看,mouseup和mousedown事件似乎也可能是由鼠标按钮而不是左键单击按钮引起的。这与一般用户所期望的非常不同。影响I编码方式的最大区别是:HTML标记上的
单击事件负责更改URL。相比之下,mousedown
和mouseup
事件不会实现这一点我的理解是,“单击”隐藏了很多复杂性(例如确保mousedown/up发生在同一元素上,用ESC/右键单击取消)。最好在“鼠标向下/向上”上使用“单击”
一种情况是,当应用程序经常更新内容,导致底层DOM元素被替换时,“单击”似乎不起作用。在这种情况下,“点击”不会被触发,可能会导致客户体验不佳。我想在其他回答中补充一点,click
事件在触控设备上有效,而mouseup
/mousedown
则不起作用(显然是因为没有“鼠标”)
请注意,有一个带有点击事件的触控设备。我认为鼠标下降和鼠标上升事件可以让您进一步控制点击事件。它将单击事件分为另外两个事件,以便可以为每个事件编码更多细节。单击事件限制鼠标单击,并强制您在同一函数中对两个事件进行编码
如果您尝试进行自己的拖动行为,则可以理解此限制
拖动需要鼠标按下事件来启动拖动行为。不能使用单击事件执行此操作。因为你需要一个单独的鼠标按下事件。单独的鼠标向上移动事件的要求变得很明显李>
拖动开始后(您尚未释放鼠标按钮),需要根据光标位置更改对象的位置。这也需要仅在鼠标按下事件中进行编码李>
但是,如果我们可以改变人们拖动对象的方式,您也可以使用“单击事件”。例如,单击-1开始拖动,单击-2停止拖动并将对象放置在另一个位置。但我发现有两个问题:
这看起来不自然。在现实世界中,我们习惯于
按住对象并拖动它
只需单击并移动鼠标,就可以移动沉重的图形,这可能需要大量的过程
@我不同意。我想知道这两个事件之间的技术差异,而不是检测用户是否点击和按住。记住,鼠标事件在基于手势的设备(如iPad或移动电话)上不起作用。它们是否真的会在没有仔细阅读这两个问题的情况下停止?请重新打开它,它不是一个副本。W3C建议在大多数鼠标事件中使用单击
,鼠标向下
,鼠标按下
,以及鼠标按下
都可以达到预期的效果。根据我的测试,似乎任何鼠标按钮都可以触发点击。请参阅鼠标中的滚动按钮在单击元素顶部时也会导致单击事件。从我做的一些快速测试中可以看出,在Firefox中使用“单击”事件处理程序时,中滚动按钮不会触发事件,但会使用“mousedown”和“mouseup”触发。如果我需要监控链接上的点击和中键点击事件,除了用户可能不再在链接上,因此不会触发链接之外,使用“鼠标”是否还有更大的缺点?