1

我想处理特定 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 中。这工作正常,但问题是右键单击后,会显示上下文菜单。显然,event.preventDefault()不起作用。如何解决此问题,以便在您右键单击后不显示上下文菜单?

4

1 回答 1

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();
});
于 2013-09-30T17:18:36.953 回答