我正在学习jquery中的事件。在实现它们的过程中,我遇到了一个疑问。mousedown()和click()事件有什么区别?在什么情况下我应该使用哪个事件?
例如:这两个事件在以下代码中执行相同的任务:
$("#p1").mousedown(function(){
alert("Mouse down over p1!");
});
$("#p1").click(function(){
alert("Mouse down over p1!");
});
两者的表现相同。有人能澄清一下区别吗?如果相同,我应该更喜欢哪个?。
8条答案
按热度按时间ki0zmccv1#
onMouseDown
将在按下左或右(或中)键时触发。类似地,onMouseUp
将在释放任何按钮时触发。onMouseDown
将在鼠标单击对象然后移开时触发,而onMouseUp
将在您单击并按住其他位置的按钮然后在对象上方释放时触发。onClick
只会在鼠标左键在同一对象上按下和释放时触发。如果你关心顺序,如果同一对象设置了所有3个事件,它是onMouseDown
,onMouseUp
,然后onClick
。每个事件应该只触发一次。详情:
http://api.jquery.com/click/
http://api.jquery.com/mouseup/
http://api.jquery.com/mousedown/
由Anton Baksheiev写入的Source
izj3ouym2#
当按下鼠标按钮但尚未释放时,将触发
mousedown
事件。click
事件在mousedown
和mouseup
事件之后触发。z31licg03#
$(element).click()
在您 * 按下 * 鼠标按钮然后释放时触发。$(element).mousedown()
,然后按鼠标键。尝试将单击的按钮按住在该按钮上,然后在此处释放按钮:http://jsfiddle.net/n9rJ9/
rur96b6h4#
你可能会这么想,因为你把两个事件处理程序都绑定在同一个元素上,所以mousedown总是在click事件发生之前触发。
如果你将它们绑定到不同的元素上,你会看到鼠标按下按钮(任何鼠标按钮)而不释放时都会触发,而在你释放鼠标左(主)边的按钮后,单击就会触发。
看这个小jsfiddle:http://jsfiddle.net/wBfbm/
wlzqhblo5#
onMouseDown
将在按下左侧或右侧(或中间)时触发。onClick
仅在同一对象上按下并释放鼠标左键时触发。zrfyljdw6#
onmousedown + onmouseup = onclick(点击事件);
cld4siwp7#
尝试这种方法。因为event.stopPropagation不会停止鼠标按下时的单击事件。鼠标按下和单击事件彼此不相关。
更新日期:
不。鼠标事件是这样触发的
1)鼠标按下
2)点击
3)鼠标向上
如果鼠标按下被触发,则标志将在鼠标按下事件后启用,单击将触发。在此单击事件中将禁用标志变量。这将作为循环方式工作。不考虑两次鼠标按下或两次单击
yvfmudvl8#
另一个主要区别(对于支持可访问性来说也是非常重要的一个区别):
此外,鼠标按下将不适用于触摸屏。
您必须添加mousedown、keydown和touchstart事件来复制单击事件。