/ / Mittleres Mausklickereignis erkennen jQuery - jQuery, click, mouseevent

Erkennen eines Ereignisses mit mittlerem Mausklick jQuery - jQuery, click, mouseevent

Ich möchte ein jQuery-UI-Dialogfeld als Popup anzeigenwenn der Benutzer auf die linke oder die mittlere Maustaste klickt. Es funktioniert für Linksklick (ich erhalte die Alarmbox und danach das Popup), aber nicht für Mittelklick (weder Alarmbox noch Popup). Was fehle ich?

$("a.external").live("click", function(e){
if( e.which <= 2 ) {
e.preventDefault();
alert ("inside if");
}
popUp.start(this);
});

Antworten:

17 für die Antwort № 1

Benutzen mousedown oder mouseup Anstatt von click. Und (es sei denn, Sie verwenden a sehr alte Version von jQuery) verwenden .on() Anstatt von .live():

$(document).on("mousedown", "a.external", function(e) {
if( e.which <= 2 ) {
e.preventDefault();
alert ("inside if");
}
popUp.start(this);
});

... wo Sie im Idealfall ein übergeordnetes Element verwenden würden, das viel näher am Link liegt als document.

Demo: http://jsfiddle.net/7S2SQ/


3 für die Antwort № 2

Um dies in Firefox (40.0.3) voll zum Laufen zu bringen, musste ich implementieren .on("mouseup", fn), wie folgt:

$(selector).on("mouseup", function (e) {

switch (e.which)
{
// Left Click.
case 1:
// By way of example, I"ve added Ctrl+Click Modifiers.
if (e.ctrlKey) {
// Ctrl+LeftClick behaviour.
} else {
// Standard LeftClick behaviour.
}
break;

// Middle click.
case 2:
// Interrupts "Firefox Open New Tab" behaviour.
break;

// Default behaviour for right click.
case 3:
return;
}

// Pass control back to default handler.
return true;
});