2013-09-30 94 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

相關問題