使用jQuery,我经常喜欢将mousedown
和mouseup
事件结合使用,以便推送可按钮。
但是,在每种情况下我都使用了mouseup
事件,绑定click
事件似乎产生了相同的结果。
以下两种方法之间是否存在实质性差异?
// Method 1
$('.myButton').bind('click', callback);
// Method 2
$('.myButton').bind('mouseup', callback);
请注意我正在寻求关于使用这两种方法之间差异的技术解释。这与被标记为欺骗的问题无关:Differentiate click vs mousedown/mouseup
答案 0 :(得分:56)
使用mouseup事件,您可以单击屏幕上的其他位置,按住单击按钮,然后将指针移动到mouseup元素,然后释放鼠标指针。
单击事件需要在该元素上发生mousedown和mouseup事件。
正常的期望是点击需要mousedown和mouseup事件,所以我建议点击事件。
从可能的副本中看来,鼠标按钮和鼠标按钮也可能由鼠标按钮引起。这与普通用户期望的非常不同。
答案 1 :(得分:1)
我的理解是"点击"隐藏了许多复杂性(例如确保mousedown / up出现在同一元素上,使用ESC /右键单击取消)。使用"点击"结束" mousedown / up"应该是首选。
"点击"当应用程序经常更新内容以使基础DOM元素被替换时,似乎不起作用。在这种情况下"点击"不会被触发,可能会导致糟糕的客户体验。
答案 2 :(得分:1)
我认为Mouse Down和Mouse Up事件可让您进一步控制click事件。它将click事件分为另外两个事件,以便可以为每个事件编码更多详细信息。单击事件限制了鼠标单击,并强制您在同一函数中对两个事件进行编码。
如果您尝试进行自己的拖动行为,则可以理解此限制。
但是,如果我们可以更改人们拖动对象的方式,则也可以使用click事件。例如,单击1开始拖动,单击2停止拖动并将对象放置在另一个位置。但是我看到两个问题:
答案 3 :(得分:0)
影响我编码方式的最大差异;是click event
a tag
负责更改网址。 mousedown,也没有mouseup事件会实现这个
答案 4 :(得分:0)
我想补充一下其他问题,即click
事件在启用了 touch 的设备上有效,而mouseup
/ mousedown
不起作用(显然是因为没有“鼠标”)
请注意,带有click
事件的触摸设备上有一个300ms delay。