出于神秘的原因,我需要能够通过mousedown事件取消点击事件。
简言之;我在mousedown事件中创建了一个上下文菜单,但是,当用户点击页面时,上下文菜单应该消失。
我无法在该场景中使用mousedown事件,因为我希望用户能够单击菜单中的链接(完整点击永远不会转到基于<a>
的菜单元素) 。
如果有任何帮助,可以应用jQuery。
我希望能够阻止点击事件从初始的mousedown中发生,或者能够将信息传递给click事件(通过originalEvent或其他方式)。
TIA
答案 0 :(得分:3)
似乎是不可能的,在click
和/或mousedown
被阻止时,FF和Opera都没有取消即将发布的mouseup
(如旁注:如果满足某些条件,则在mouseup之后调度click )。测试用例:http://jsfiddle.net/ksaeU/
答案 1 :(得分:1)
我刚刚遇到了同样的问题。我修改了我的上下文菜单,方法是在mousedown
关闭它并在菜单上吃mousedown
个事件,这样我仍然可以在菜单上点击,如下所示:
$(document).one('mousedown.ct', null, function() { cmenu.hide(); return false; });
cmenu.bind('mousedown', function(e) { e.stopImmediatePropagation(); });
在hide()
函数中,我再次取消绑定mousedown.ct
,以防因点击项目而关闭。
答案 2 :(得分:0)
$('a').bind({
mousedown: function(){
// Do stuff
},
click: function(e){
e.preventDefault();
}
});