'mouseup'和'click'事件有什么区别?

时间:2013-02-11 02:51:24

标签: javascript jquery

使用jQuery,我经常喜欢将mousedownmouseup事件结合使用,以便推送可按钮。

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

以下两种方法之间是否存在实质性差异?

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

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

请注意我正在寻求关于使用这两种方法之间差异的技术解释。这与被标记为欺骗的问题无关:Differentiate click vs mousedown/mouseup

5 个答案:

答案 0 :(得分:56)

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

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

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

从可能的副本中看来,鼠标按钮和鼠标按钮也可能由鼠标按钮引起。这与普通用户期望的非常不同。

答案 1 :(得分:1)

我的理解是"点击"隐藏了许多复杂性(例如确保mousedown / up出现在同一元素上,使用ESC /右键单击取消)。使用"点击"结束" mousedown / up"应该是首选。

"点击"当应用程序经常更新内容以使基础DOM元素被替换时,似乎不起作用。在这种情况下"点击"不会被触发,可能会导致糟糕的客户体验。

答案 2 :(得分:1)

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

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

  1. 拖动需要鼠标向下事件来启动拖动行为。您无法通过点击事件来做到这一点。并且由于您需要单独的鼠标按下事件。单独进行鼠标上移事件的要求变得显而易见。
  2. 一旦开始拖动(尚未释放鼠标按钮),就需要对象根据光标位置更改位置。这也仅需要在鼠标按下事件中进行编码。

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

  1. 它看起来不自然。就像在现实世界中,我们习惯 按下对象并将其拖动。
  2. 仅通过单击和鼠标移动即可移动沉重的图形,这可能需要大量的过程。

答案 3 :(得分:0)

影响我编码方式的最大差异;是click event a tag负责更改网址。 mousedown,也没有mouseup事件会实现这个

答案 4 :(得分:0)

我想补充一下其他问题,即click事件在启用了 touch 的设备上有效,而mouseup / mousedown不起作用(显然是因为没有“鼠标”)

请注意,带有click事件的触摸设备上有一个300ms delay