处理右键单击事件后不显示上下文菜单

时间:2013-09-30 17:06:44

标签: javascript jquery html mouseevent mousedown

我想在特定的div元素上处理右键单击事件。在stackoverflow中挖掘了一些答案之后,我想出了这个:

 $('#mydiv').mousedown(function(event) {
if ((event.which == 3)&& (event.target.nodeName == 'SPAN')){
     $("#outpdiv").append($(event.target).text().concat(" , "));
     event.preventDefault();
}
 });

正如您所看到的,我试图将mydiv中span元素的内容追加到另一个div元素outpdiv中。这工作正常,但问题是在右键单击后,显示了contextmenu。显然,event.preventDefault()不起作用。如何解决此问题,以便在右键单击后不显示上下文菜单?

1 个答案:

答案 0 :(得分:2)

尝试捕获contextmenu事件并在该处理程序中调用preventDefault()

http://jsfiddle.net/cTp9x/

$('#mydiv').mousedown(function (event) {
    if ((event.which == 3) && (event.target.nodeName == 'SPAN')) {
        $("#outpdiv").append($(event.target).text().concat(" , "));        
    }
});

$(document).on('contextmenu', function(e) {
    e.preventDefault();
});

回应你的评论。如果您只想在单击该特定div时禁用上下文菜单,则可以将处理程序绑定到该菜单。在jQuery和本机事件处理程序之间切换很麻烦,IMO:

$('#mydiv').on('contextmenu', function(e) {
    e.preventDefault();
});
相关问题