2017-07-31 96 views
0

我想獲得一個簡單的右擊來觸發一個函數,並且右移來顯示正常的上下文菜單而不觸發任何函數。左鍵單擊綁定到另一個功能。如何獲得在右鍵單擊而不是右鍵單擊時顯示的上下文菜單?

我想:

$(selector).mousedown(function (ev) { 
    if (ev.which === 1) { 
    function1(); 
    } else if (ev.which === 3) { 
    if (ev.shiftKey) { 

    } else { 
     ev.preventDefault(); 
     ev.stopPropagation(); 
     function2(); 
    } 
    } 

    return false; 
}); 

但是當我SHFT-右鍵關聯菜單中仍顯示。

我不想使用

$(selector).attr("oncontextmenu", "return false;"); 

,因爲這將完全禁用上下文菜單。

回答

0

使用contextmenu事件,而不是mousedown的右鍵

$('div').on('contextmenu', function(ev) { 
 
    if (!ev.shiftKey) { 
 
    ev.preventDefault(); 
 
    function2(); 
 
    } 
 
}).on('mousedown', function(ev) { 
 
    if (ev.which == 1) { 
 
    function1(); 
 
    } 
 
}); 
 

 
function function2() { 
 
    console.log('function 2 called') 
 
} 
 

 
function function1() { 
 
    console.log('function 1 called') 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div style="padding:50px; border:1px solid #ccc"> 
 
    Test 
 
</div>

+0

適用於Chrome和Firefox! –

0
if(!ev.shiftKey){ 
    ev.preventDefault(); 
    anotherFunction(); 
} 
+0

我使用它,在我的代碼,唯一的區別是,我有'ev.stopPropagation() ;'太:它是不是工作負責? –

+0

它不適用於chrome –

相關問題