在mousedown事件中,是否可以取消生成的点击事件?或传递信息给它?

时间:2011-05-18 16:49:55

标签: javascript jquery browser dom-events

出于神秘的原因,我需要能够通过mousedown事件取消点击事件。

简言之;我在mousedown事件中创建了一个上下文菜单,但是,当用户点击页面时,上下文菜单应该消失。

我无法在该场景中使用mousedown事件,因为我希望用户能够单击菜单中的链接(完整点击永远不会转到基于<a>的菜单元素) 。

如果有任何帮助,可以应用jQuery。

我希望能够阻止点击事件从初始的mousedown中发生,或者能够将信息传递给click事件(通过originalEvent或其他方式)。

TIA

3 个答案:

答案 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)

嘿,我认为这就是你要对代码做的事情。如果没有,我道歉,我可能误解了这个问题。我使用jQuery来完成它:http://jsfiddle.net/jackrugile/KArRD/

$('a').bind({
    mousedown: function(){
        // Do stuff
    },
    click: function(e){
        e.preventDefault();
    }
});