我想在特定的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()
不起作用。如何解决此问题,以便在右键单击后不显示上下文菜单?
答案 0 :(得分:2)
尝试捕获contextmenu
事件并在该处理程序中调用preventDefault()
:
$('#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();
});