2012-12-04 37 views
4
 
// this works 

$(document).on('contextmenu', function() { 
    return false; 
}); 
 
// without the code above, this works too 

$(document).on('contextmenu', '#special', function() { 
    alert('#special right clicked'); 
});

我怎樣才能將這些2個代碼,這樣我可以在除了一個ID爲#special整個文檔禁用上下文菜單。jQuery的允許文本菜單隻對某些元素

+0

你的第二個代碼應禁用所有其他的,除了編號特殊.... – bipen

+0

沒有,第二個代碼什麼也不做,但警戒#special。如果第一個代碼被呈現,它會忽略第二個代碼。 – user1643156

回答

10
$(document).on('contextmenu', function(e) { 
    if (!$(e.target).is("#special")) 
     return false; 

    alert('#special right clicked'); 
    // you may want e.preventDefault() here 
}); 

使用.is() method讓你測試點擊的元素是否有任何選擇,這基本上是你的原委派.on()通話做了幕後匹配,但如果你正在檢查的元素ID具體地說,它會更高效地說:

if (e.target.id != "special") 
    return false; 
+1

aha ...那簡單...我期待一些contextmenu插件的答案。謝謝。 (5分鐘以上才能接受答案) – user1643156

+0

@ user1643156 - 我希望你認識到某些瀏覽器(Chrome/Firefox)的設置不允許你用javascript阻止右鍵菜單,所以這不會在所有瀏覽器中普遍使用。 – jfriend00

+0

@ jfriend00謝謝你的擡頭。我剛剛在Chrome 23和Firefox 3.6和15上測試過,它們都工作到目前爲止。 – user1643156