2017-07-31 123 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 –

相关问题