2013-09-30 48 views
1

我想处理特定div元素上的右键单击事件。经过数计算器答案的挖掘后,我想出了这个:处理右键单击事件后不显示上下文菜单

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

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

回答

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(); 
}); 
+0

我接受你的答案,因为你是第一个,但不是禁用上下文菜单中你的方式,我接着说:的document.getElementById(“mydiv” ).oncontextmenu = new Function(“return false”)' – rivu

+0

请参阅我的编辑。只是一个建议。 –

+0

是的,我试过。显然,'e.preventDefault()'不适合我。我正在使用http://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.min.js – rivu

相关问题