2012-05-10 71 views
3

我正在嘗試爲右鍵單擊事件添加一些行爲。奇怪的是,我根本無法完成事件處理工作。未能在Mozilla Firefox中識別右鍵單擊事件

這是jQuery代碼:

$('body').on('click', '#wrapper', null, function(ev){ 
    if (ev.which === 2 || ev.which === 3){ 
     alert("Here!"); 
    } 
}); 

我認爲,在事件被觸發,但它不能被認定爲「右擊」。警告消息從不顯示。 我在做什麼錯?謝謝!

LE:我可以通過ev.which === 1識別左鍵單擊事件。所以這裏沒有問題。

+0

究竟是什麼問題了嗎?點擊事件不會被解僱嗎?是否存在一個問題,即「ev」還是「ev.which」或其中一個值? – oezi

+0

@oezi點擊事件被觸發,但無法識別。警告消息不顯示 – TGM

+0

@TGM實際上,點擊事件適用於左鍵和中點擊:http://jsfiddle.net/sNzsh/4/無論如何,我做了一些測試,ev.which = 0與任何點擊IE8 。 ev.which = 1用於左鍵點擊,不用於中點擊。你在哪裏發現它可能是2或3? – Shikiryu

回答

2

,而不是click使用mousedown

$('body').on('mousedown', '#wrapper', null, function(ev){ 
    if (ev.which === 2 || ev.which === 3){ 
     alert("Here!"); 
    } 
});​ 
+0

是的,它的工作原理http://jsfiddle.net/sNzsh/7/ – Shikiryu

+0

在FF4上,2 =中間點擊,3 =右鍵點擊,無法從這裏測試其他瀏覽器。 – Shikiryu

+0

謝謝,就是這樣! – TGM

1

使用JavaScript你可以試試這個

document.onmousedown = ListenMouseClick 
document.onmouseup = ListenMouseClick 

function ListenMouseClick() 
{ 
if (window.event.button==2) 
    { 
     alert('right click') 
    } 
} 
1

易於使用的三元運營商和 'mousedown' 或 'contextmenu'

http://jsfiddle.net/49Ldy/

$('body').on('mousedown','#wrapper',function(ev){ 
    var evt = ev.which === 3 ? alert('rightClick') : alert('someOtherButton'); 
}); 

或:

$('body').on('mousedown','#wrapper',function(ev){ 
    var evt = ev.which === 3 ? alert('rightClick') : (ev.which === 2 ? alert('auxClick') : alert('someOtherButton')); 
}); 

或:

$('body').on('contextmenu','#wrapper',function(){ 
    alert('rightClick'); 
    return false; 
}); 
+0

謝謝!就是這樣。我不能讓你的答案是最終的,因爲有人早些時候給了我同樣的解決方案。不過,非常感謝。 – TGM

+0

@TGM沒問題我很慢;)謝謝,快樂編碼 –