2012-01-09 4 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

Bind 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

это не тэг вопрос и контекстменю - это плагин, см. Http://www.abeautifulsite.net/blog/2008/09/jquery-context-menu-plugin/ –

+1

@Gabriel Gartz: не очень, так как 1.7 кажется, что он включен в jQuery native ... – markzzz

+0

EDIT: плагины, которые вы имеете в виду, разные (я думаю), чем функция '.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/

Смежные вопросы