42

我正在学习 jquery 中的事件。在实施它们时,我遇到了一个疑问。mousedown() 和 click() 事件有什么区别。我应该在什么条件下使用哪个事件。?

例如:两个事件在以下代码中执行相同的任务:

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


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

两者执行相同。有人可以澄清区别吗?如果相同,我应该更喜欢哪个?

4

7 回答 7

58

onMouseDown将在按下左或右(或中间)时触发。同样,onMouseUp当任何按钮被释放时都会触发。onMouseDown即使鼠标单击对象然后移开它onMouseUp也会触发,而如果您在其他地方单击并按住按钮,然后在对象上方释放它,则会触发。

onClick只有在同一对象上按下并释放鼠标左键时才会触发。如果您关心顺序,如果同一个对象设置了所有 3 个事件,则它是onMouseDown, onMouseUp, then onClick。每个偶数应该只触发一次。

细节:

http://api.jquery.com/click/
http://api.jquery.com/mouseup/
http://api.jquery.com/mousedown/

来源Anton Baksheiev 撰写

于 2013-10-01T06:55:55.567 回答
18

mousedown按下鼠标按钮但在释放之前触发事件。

该事件在and事件click之后触发。mousedownmouseup

于 2013-10-01T06:54:41.113 回答
1

$(element).click()当您按下鼠标按钮然后释放它时触发。

$(element).mousedown()触发,然后按下鼠标按钮。

尝试将单击的按钮按住该按钮,然后在此处释放它:http: //jsfiddle.net/n9rJ9/

于 2013-10-01T06:55:59.713 回答
1

他们不。您可能会这样认为,因为您将两个事件处理程序绑定在同一个元素上,因此 mousedown 将始终在 click 事件发生之前触发。

如果将它们绑定在不同的元素上,您将看到 mousdown 将始终在按下按钮(任何鼠标按钮)时触发而无需释放,并且在您释放左侧(主)侧的鼠标按钮后单击将触发。

看到这个小 jsfiddle:http: //jsfiddle.net/wBfbm/

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


$("#p2").click(function(){
  alert("Mouse down over p1!");
});
于 2013-10-01T06:56:17.087 回答
1

onMouseDown将在按下左或右(或中间)时触发。

onClick只有在同一对象上按下并释放鼠标左键时才会触发。

于 2013-10-01T06:56:52.393 回答
0

试试这个方法。因为 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) 鼠标向上

如果触发了鼠标按下,则在鼠标按下事件单击将触发后,标志将启用。在此单击事件中,将禁用标志变量。这将作为循环方式工作。不会考虑两下鼠标或两下点击

于 2013-10-01T07:01:00.103 回答
0

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  
于 2018-11-16T05:25:45.953 回答