有没有办法知道,在jQuery onmouseup
处理程序中,如果事件后面会有同一元素的click
事件?
我有一个菜单超链接的事件处理程序,当用户点击元素或在元素上“拖放”(如在拖放中)时,它会自行解除绑定。如果接下来要click
,我想避免在mouseup上过早解除处理程序的绑定。
我意识到我可以自己跟踪mousedown
和mouseup
事件或以其他方式破解解决方案(例如,等待50毫秒以查看是否很快就会出现点击),但我希望避免自己滚动实现,如果有内置的东西用于此目的。
答案 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')
}
});