2010-06-04 62 views
6

我編寫了一個jquery腳本,其中屏幕上有一個小網格,並使用拖放用戶可以將網格放置在網格上(卡入到位)。目前,如果您將鼠標懸停在平鋪上,則可以選擇旋轉,但如果您可以右鍵點擊旋轉(使其更自然),我會更喜歡它。我理解阻止完全右鍵點擊通常是不被理睬的,所以想知道是否可能只在特定元素內,然後捕獲該事件,在JS中執行某些操作並禁用上下文菜單? - 適用於所有瀏覽器。JavaScript:捕獲右鍵單擊並禁用某些元素內的菜單

在附註中,目前我正在使用jQuery進行效果和自定義javascript的拖放,是否值得查看一個用於拖放的jQuery插件?

非常感謝,

回答

12

爲了捕獲右鍵,就可以使用這個jQuery:

$('#gridID').bind('contextmenu', function(e) { 
    // do stuff here instead of normal context menu 
    return false; 
}); 

這適用於chrome,firefox和Safari。 未測試IE 。也適用於IE。只有警告,它顯然不在歌劇中奏效。所以,如果你可以忍受那個...

+0

這個答案是無效的,contextmenu被觸發右側mousedown,而不是右鍵單擊。 – 2015-11-27 13:55:20

+0

有點苛刻和挑剔的想法可以降低有效的答案。也許措辭令人困惑,但即使Mozilla文檔也說「右鍵單擊」(https://developer.mozilla.org/en-US/docs/Web/Events/contextmenu)。無論如何,代碼是關於簡單地捕獲瀏覽器的「contextmenu」事件並停止顯示菜單。 – ryanulit 2015-11-30 19:16:06

0

我不喜歡在網頁上使用鼠標右鍵。但是,如果您確實想要這樣做,則可以按照here所述的方法捕獲鼠標右鍵。如果鼠標懸停在網格單元上,可以有條件地阻止鼠標右鍵(換句話說,在事件處理程序中返回false)。

關於你的獎金問題:jquery ui has drag & drop functionality。使用它比使用自己的可能更容易。

+0

非常感謝,遵循你的建議我一直在尋找「可拖動」,發現這個http://jqueryui.com/demos/draggable/snap-to.html似乎是我需要什麼拖動 – 2010-06-04 10:59:25