2012-01-09 12 views
3

This簡単なコードです:実際になぜ右クリックが.click()でトリガされないのですか?

HTML

<a id="link" href="#">Ciao</a> 

jQueryの

$('#link').click(function() { 
    alert("ciao"); 
}); 

、ミドル/左ボタンがトリガー(アラートが印刷されます)が、右クリックとは?何故なの?そして私はどのようにそれを引き起こすことができますか?左、真ん中、右クリックを処理するため

+1

関連します。http:// stackoverflowの.com/questions/1646851/jquery-right-click-event – David

答えて

7

バインドmousedown

$('#link').mousedown(function(e) { 
    alert("ciao"); 
}); 

あなたは、ボタンがクリックされた確定にe.whichを使用することができます。 1:左、2:中、3:右。 http://jsfiddle.net/fPhDg/9/


あなたはこのように表示されてからコンテキストメニューを停止することができます:

$('#link').contextmenu(false); 

デモ:http://jsfiddle.net/y4XDt/

あなたは非常に非常に慎重にこれを使用する必要があります

はここでデモです!ごくまれにしか意味がありません。

+10

そして、「コードスチール」の想像上の恐怖ではなく、非常に正当な理由でそれを使用してください。コンテキストメニューを無効にすると、重要なブラウザ機能が無効になり、一部のユーザーが邪魔になることがあります。このイベントをバインドできないブラウザを使用することさえあります。 –

+0

@markzzz左、中央、右のボタンをクリックすると、機能をトリガーしたいと思ったのですが?右ボタンを探しているだけの場合は '.contextmenu(fn)'を使います。 –

+0

ブラウザのコンテキストメニューを削除したいのですが?だから、右クリックしてブラウザのウィンドウを表示せずに? – markzzz

4

使用.contextmenu(...)

$('#link').contextmenu(function() { 
    alert("ciao"); 
}); 

そして、あなたは両方のイベントをキャッチしたい場合は、bind(...)機能を使用できます:あなたはこのように、マウスの右クリックをキャプチャすることができます

$('#link').bind('click contextmenu',function() 
{ 
    alert("ciao"); 
}); 

http://jsfiddle.net/fPhDg/4/

+0

これはawnserではありません。質問とコンテキストメニューはプラグインです。http://www.abeautifulsite.net/blog/2008/09/jquery-context-menu-plugin/ –

+1

@Gabriel Gartz:1.7以降それはjQueryのネイティブに含まれているようです... – markzzz

+0

編集:あなたが意味するプラグインは '.contextmenu()' jquery関数とは異なります(私は思います)。実際には.context 'M' enuによって呼び出されます。 – markzzz

0

を:

<head> 
<script> 
function whichButton(event) 
{ 
if (event.button==2) 
    { 
    alert("You clicked the right mouse button!"); 
    } 
else 
    { 
    alert("You clicked the left mouse button!"); 
    } 
} 
</script> 
</head> 

<body onmousedown="whichButton(event)"> 
<p>Click in the document. An alert box will alert which mouse button you clicked.</p> 
</body> 
2

あなたは、クリックイベントなどそのコンテキストメニューイベントをサブスクライブすることができます

$('#link').on('click contextmenu', function (e) { 
    if (e.which === 3) { 
    // Right mousebutton was clicked 
    // 1 is left mousebutton 
    // 2 is centre mousebutton 
    } 
}); 
1

はこれを試して...

$('#link').mousedown(function (event) { 
    if(event.which === 1) 
    alert("left click"); 
    if(event.which === 2) 
    alert("center click"); 
    if(event.which === 3) 
    alert("right clikc"); 
}); 

フィドル:http://jsfiddle.net/fPhDg/8/

関連する問題