我正在学习jquery中的事件。在实施它们时,我遇到了一个疑问。 mousedown()和click()事件有什么区别。我应该在什么条件下使用哪个事件。?
例如: 这两个事件在以下代码中执行相同的任务:
$("#p1").mousedown(function(){
alert("Mouse down over p1!");
});
$("#p1").click(function(){
alert("Mouse down over p1!");
});
两者都表现相同。有人可以澄清差异。如果相同,我应该更喜欢哪个?。
答案 0 :(得分:40)
onMouseDown
将触发。同样,释放任何按钮时都会触发onMouseUp
。即使在对象上单击鼠标然后移出它,onMouseDown
也会触发,而如果单击并按住其他位置的按钮,则会触发onMouseUp
,然后将其释放到对象上方。
onClick
才会触发。如果您关心订单,如果同一个对象设置了所有3个事件,则为onMouseDown
,onMouseUp
,然后是onClick
。每个偶数只应该触发一次。
详细说明:
http://api.jquery.com/click/
http://api.jquery.com/mouseup/
http://api.jquery.com/mousedown/
答案 1 :(得分:13)
答案 2 :(得分:1)
$(element).click()
会闪现。
$(element).mousedown()
点火,然后按下鼠标按钮。
尝试按住该按钮上的单击按钮,然后在此处将其释放:http://jsfiddle.net/n9rJ9/
答案 3 :(得分: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!");
});
答案 4 :(得分:1)
onMouseDown
将在按下左侧(或中间)时触发。
onClick
才会触发。
答案 5 :(得分:1)
试试这种方式。因为event.stopPropagation不会停止鼠标按下事件事件。鼠标按下和单击事件彼此无关。
var mousedDownFired = false;
$("#id").mousedown(function(event){
mousedDownFired =true;
//code
});
$("#id").click(function(event){
if(mousedDownFired)
{
mousedDownFired = false;
return;
}
//code
});
更新:
没有。鼠标事件就像这样触发
1)MouseDown
2)点击
3)MouseUp
如果触发鼠标按下,则在触发鼠标按下事件后将启用标志。在此单击事件将禁用标志变量。这将作为循环方式工作。不要考虑两个鼠标按下或两次点击
答案 6 :(得分:0)
mouseDown,mouseUp和mouseClick以及其他一些事件中有许多与鼠标点击相关的事件。
一个mouseClick事件通常先跟一个mouseDown,然后是mouseUp,只要鼠标在这个过程中没有被移动。
答案 7 :(得分: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