jquery中鼠标按下和单击的区别

8qgya5xd  于 2023-02-18  发布在  jQuery
关注(0)|答案(8)|浏览(271)

我正在学习jquery中的事件。在实现它们的过程中,我遇到了一个疑问。mousedown()和click()事件有什么区别?在什么情况下我应该使用哪个事件?
例如:这两个事件在以下代码中执行相同的任务:

$("#p1").mousedown(function(){
  alert("Mouse down over p1!");
});

$("#p1").click(function(){
  alert("Mouse down over p1!");
});

两者的表现相同。有人能澄清一下区别吗?如果相同,我应该更喜欢哪个?。

ki0zmccv

ki0zmccv1#

onMouseDown将在按下左或右(或中)键时触发。类似地,onMouseUp将在释放任何按钮时触发。onMouseDown将在鼠标单击对象然后移开时触发,而onMouseUp将在您单击并按住其他位置的按钮然后在对象上方释放时触发。
onClick只会在鼠标左键在同一对象上按下和释放时触发。如果你关心顺序,如果同一对象设置了所有3个事件,它是onMouseDownonMouseUp,然后onClick。每个事件应该只触发一次。
详情:
http://api.jquery.com/click/
http://api.jquery.com/mouseup/
http://api.jquery.com/mousedown/
Anton Baksheiev写入的Source

izj3ouym

izj3ouym2#

当按下鼠标按钮但尚未释放时,将触发mousedown事件。
click事件在mousedownmouseup事件之后触发。

z31licg0

z31licg03#

$(element).click()在您 * 按下 * 鼠标按钮然后释放时触发。
$(element).mousedown(),然后按鼠标键。
尝试将单击的按钮按住在该按钮上,然后在此处释放按钮:http://jsfiddle.net/n9rJ9/

rur96b6h

rur96b6h4#

你可能会这么想,因为你把两个事件处理程序都绑定在同一个元素上,所以mousedown总是在click事件发生之前触发。
如果你将它们绑定到不同的元素上,你会看到鼠标按下按钮(任何鼠标按钮)而不释放时都会触发,而在你释放鼠标左(主)边的按钮后,单击就会触发。
看这个小jsfiddle:http://jsfiddle.net/wBfbm/

$("#p1").mousedown(function(){
  alert("Mouse down over p1!");
});

$("#p2").click(function(){
  alert("Mouse down over p1!");
});
wlzqhblo

wlzqhblo5#

onMouseDown将在按下左侧或右侧(或中间)时触发。
onClick仅在同一对象上按下并释放鼠标左键时触发。

zrfyljdw

zrfyljdw6#

onmousedown + onmouseup = onclick(点击事件);

** actions **                             ** event **

mouse press/down                          onmousedown
mouse release/up                          onmouseup
mouse press/down + mouse release/up       onclick
Key Enter/space press                     onclick
cld4siwp

cld4siwp7#

尝试这种方法。因为event.stopPropagation不会停止鼠标按下时的单击事件。鼠标按下和单击事件彼此不相关。

var mousedDownFired = false;

  $("#id").mousedown(function(event){
      mousedDownFired =true;
      //code
  });

  $("#id").click(function(event){
     if(mousedDownFired)
      {
         mousedDownFired = false;
         return;
      }
      //code
 });

更新日期:
不。鼠标事件是这样触发的
1)鼠标按下
2)点击
3)鼠标向上
如果鼠标按下被触发,则标志将在鼠标按下事件后启用,单击将触发。在此单击事件中将禁用标志变量。这将作为循环方式工作。不考虑两次鼠标按下或两次单击

yvfmudvl

yvfmudvl8#

另一个主要区别(对于支持可访问性来说也是非常重要的一个区别):

  • 当一个元素(例如按钮)获得焦点并按下“Enter”键时,将触发单击事件
  • 鼠标按下事件不会被键盘操作触发。

此外,鼠标按下将不适用于触摸屏。
您必须添加mousedown、keydown和touchstart事件来复制单击事件。

相关问题