jquery:如何判断mouseup是否会跟随click事件?

时间:2012-02-29 08:32:21

标签: javascript jquery javascript-events

有没有办法知道,在jQuery onmouseup处理程序中,如果事件后面会有同一元素的click事件?

我有一个菜单超链接的事件处理程序,当用户点击元素或在元素上“拖放”(如在拖放中)时,它会自行解除绑定。如果接下来要click,我想避免在mouseup上过早解除处理程序的绑定。

我意识到我可以自己跟踪mousedownmouseup事件或以其他方式破解解决方案(例如,等待50毫秒以查看是否很快就会出现点击),但我希望避免自己滚动实现,如果有内置的东西用于此目的。

2 个答案:

答案 0 :(得分:3)

没有内置任何东西,因为它真的特定于您的需求。因此,如果jQuery能够处理点击,长按,移动等任何组合,那么需要维持数公里的代码和文档。

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

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

答案 1 :(得分:2)

您可以使用$(selector).data(' events')

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