2012-02-29 71 views
3

有没有办法知道,在一个jQuery onmouseup处理程序,如果该事件将被随后是click事件相同的元素?jquery:如何判断mouseup是否会跟着点击事件?

我有一个菜单的超链接的事件处理程序,其解除绑定本身当用户或者一个元件上点击或一个元素上的“下降”(如在拖动正压降)。我想避免过早解除绑定处理程序上的mouseup如果click旁边来了。

我知道我可以跟踪mousedownmouseup事件本人或以其他方式砍了一个解决方案(例如,等待50毫秒,看是否有点击谈到即将推出),但我希望避免我自己的滚动实施,如果有什么东西内置以此目的。

+8

所以,你问如果jQuery是能够预测未来? – 2012-02-29 09:27:37

+0

:-)浏览器知道一个鼠标松开是否会产生一次点击,所以它不是完全的未来预测,但如果浏览器不提供一种方法来访问这些知识,然后我同意我们在crstyal球领土。 – 2012-02-29 17:54:47

+0

但浏览器已经提供了您需要的一切。将鼠标向下/鼠标上移事件视为“低级”,而不是点击事件。如果您需要对鼠标按钮进行微调控制,请使用'up'和'down'并编写您自己的时间码。如果你想要更多的抽象,并且需要更少的控制,使用'click'。不要一次使用两者。 – 2012-02-29 18:43:44

回答

3

没有什么内置的,因为它是真正具体到您的需求。因此,如果jQuery能够处理任何点击,长时间点击,移动等组合,将会有数千公里的代码和文档来维护。

也很难给您一个满足您需求的片段,但setTimeout通常是第一步取,用类似的东西:

obj.mouseup = function(){ 
    obj.click = action; // do action 
    setTimeout (function() { 
     obj.click = functionOrigin // after 500 ms, disable the click interception 
    }, 500); 
}; 
+0

是的,我结束了一个简短的超时解决方案。谢谢! – 2012-03-01 02:29:24

2

可以使用$(选择)。数据(“事件”)为

$('div').mouseup(function(){ 
if($(this).data('events').click){ 
    console.log('Has a click event handler') 
} 
}); 
+0

+1为指针,以找到一个元素jQuery的事件处理程序......一直想知道,在另一个项目。 – 2012-03-01 02:29:57

相关问题