2012-02-29 7 views
5

私はいくつかのリンクを含むテーブルを構築する関数を呼び出しています。JS:jQuery(インライン)なしで右クリックを検出

右または左のマウスでリンクがクリックされているかどうかを確認します。

ハイパーリンク<a>に次の部分を追加しようとしました。

onmousedown="function mouseDown(e){ 
switch (e.which) { 
    case 1: alert('left'); break; 
    case 2: alert('middle'); break; 
    case 3: alert('right'); break; } 
}" 

リンクをクリックしても何も起こりません。

+0

組み込みのイベントハンドラ属性は使用しないでください。代わりにDOMイベントバインディングを使用してください。 – Quentin

+0

私は試しましたが、それは私のためには機能しませんでした。たぶんテーブルが後で読み込まれて(レンダリングされたページのソースコードに表示されないため) –

答えて

14

HTML:

<a href="#" onmousedown="mouseDown(event);">aaa</a>​​​​​​​​​​​​​​​​​​​​​​​​​​​ 

のjavascript:

function mouseDown(e) { 
    e = e || window.event; 
    switch (e.which) { 
    case 1: alert('left'); break; 
    case 2: alert('middle'); break; 
    case 3: alert('right'); break; 
    } 
}​ 

demo

+2

グローバルイベントオブジェクトに応じてこのIEのみが作成されることは間違いないでしょうか? – Quentin

+0

@Quentin少なくとも、動作します。 – xdazz

+2

chrome:yes、firefox:いいえ、IE9:いいえ:\ –

3

e.buttonを使用して値を正規化してe.whichに保存するブラウザをサポートするxdazzの回答を修正しました。追加された行は、JQueryライブラリで使用される行です。

function mouseDown(e) { 
    e = e || window.event; 
    if (!e.which && e.button !== undefined) { 
    e.which = (e.button & 1 ? 1 : (e.button & 2 ? 3 : (e.button & 4 ? 2 : 0))); 
    } 
    switch (e.which) { 
    case 1: alert('left'); break; 
    case 2: alert('middle'); break; 
    case 3: alert('right'); break; 
    } 
}​ 
関連する問題