Sprawdź moje jsfiddle próbny, gdyby e.which == 1
następnie, gdy klikniesz lewym przyciskiem myszy, wyświetli się h2
e.which == 2
lub e.which == 3
to nie zadziała. 2 to środkowy przycisk myszy, a 3 to prawy przycisk myszy. Znalazłem to również:
JQuery zapewnia atrybut e.which, zwracając odpowiednio 1, 2, 3 dla lewego, środkowego i prawego kliknięcia. Więc możesz również użyć, jeśli (np. == 3) {alert ("prawy klik"); }
Ten kod nie działa:
kod:
$("h2").live("click", function(e) {
if( e.which == 2 ) {
e.preventDefault();
alert("middle button");
}
});
Odpowiedzi:
24 dla odpowiedzi № 1Możliwe, że chcesz przechwycić zdarzenie, które jest mousedown, i musisz również zapobiec temu, aby zdarzenie oncontextmenu zatrzymywało menu kontekstowe podczas zdarzenia związanego z kliknięciem prawym przyciskiem myszy.
$("h2").live("mousedown", function(e) {
if( (e.which == 1) ) {
alert("left button");
}if( (e.which == 3) ) {
alert("right button");
}else if( (e.which == 2) ) {
alert("middle button");
}
e.preventDefault();
}).live("contextmenu", function(e){
e.preventDefault();
});
2 dla odpowiedzi nr 2
Zauważyłem w przeszłości kilka dziwactw z użyciemwydarzenie kliknięcia dla czegokolwiek innego niż zwykłe kliknięcie lewym przyciskiem myszy. Nie pamiętam szczegółów, ale jeśli zmienisz "kliknij" na "mousedown" lub "mouseup", powinieneś uzyskać lepsze wyniki.
1 dla odpowiedzi nr 3
Teraz
button
został sfrustrowany ponad wszelkie uznanie. Według W3C jego wartości powinny wynosić:
- Lewy przycisk - 0
- Środkowy przycisk - 1
- Prawy przycisk - 2
Według Microsoftu jego wartości powinny być:
- Lewy przycisk - 1
- Środkowy przycisk - 4
- Prawy przycisk - 2
Bez wątpienia model Microsoftu jest lepszy niż W3C. 0 powinno oznaczać "bez naciśnięcia przycisku", wszystko inne jest nielogiczne.
Od http://www.quirksmode.org/js/events_properties.html