41

使用 jQuery,我经常喜欢将mousedownmouseup事件结合起来用于可按下的按钮。

但是,在每种情况下,我都使用了该mouseup事件,而是绑定该click事件似乎会产生相同的结果。

以下两种方法有什么实质性区别吗?

// Method 1
$('.myButton').bind('click', callback);

// Method 2
$('.myButton').bind('mouseup', callback);

请注意,我正在寻求有关使用这两种方法之间差异的技术解释。这与被标记为欺骗的问题无关:区分点击与鼠标按下/鼠标

4

5 回答 5

81

使用 mouseup 事件,您可以单击屏幕上的其他位置,按住单击按钮,然后将指针移动到 mouseup 元素,然后释放鼠标指针。

单击事件需要在该元素上发生 mousedown 和 mouseup 事件。

正常的期望是单击需要 mousedown 和 mouseup 事件,所以我建议单击事件。

从可能的重复中,mouseup 和 mousedown 事件似乎也可能由鼠标按钮而不是左键单击按钮引起。这与一般用户所期望的非常不同。

于 2013-02-11T02:52:46.690 回答
1

我认为 Mouse Down 和 Mouse Up 事件可以让您进一步控制 click 事件。它将点击事件分成另外两个事件,以便可以为每个事件编码更多细节。单击事件限制鼠标单击并强制您在同一函数中编写两个事件。

如果您尝试进行自己的拖动行为,您可以理解此限制。

  1. 拖动需要鼠标按下事件才能开始拖动行为。你不能用点击事件来做到这一点。而且由于您需要一个单独的鼠标按下事件。单独的鼠标向上事件的要求变得很明显。
  2. 一旦开始拖动(您尚未释放鼠标按钮),您需要对象根据光标位置更改位置。这也只需要在鼠标按下事件中进行编码。

但是,如果我们可以改变人们拖动对象的方式,您也可以使用点击事件。例如,click-1 开始拖动,click-2 停止拖动并将对象放在另一个位置。但是我看到了两个问题:

  1. 它看起来不自然。就像在现实世界中一样,我们习惯于按下对象并拖动它。
  2. 仅通过单击和鼠标移动来移动繁重的图形可能是过程密集型的。
于 2020-04-18T05:37:00.590 回答
1

我的理解是“点击”隐藏了很多复杂性(例如确保鼠标按下/向上发生在同一个元素上,用 ESC/右键单击取消)。应该首选使用“click”而不是“mousedown/up”。

一种情况是,当应用程序经常更新内容时,“点击”似乎不起作用,以至于底层 DOM 元素被替换。在这种情况下,不会触发“点击”,可能会导致客户体验不佳。

于 2016-12-03T00:07:26.230 回答
0

影响我编码方式的最大区别是: HTML 标记click上的事件a负责更改 URL。相反,mousedownandmouseup事件不会实现这一点

于 2013-02-11T02:55:13.547 回答
0

我想添加其他答案,即click事件在启用触摸的设备上有效,而mouseup/mousedown不(显然是因为没有“鼠标”)

请注意,触摸设备上的事件有300 毫秒的延迟。click

于 2018-09-06T20:43:19.803 回答