/ / Détection d'événement de clic de souris central jQuery - jquery, click, mouseevent

Détection d'un événement de clic de souris intermédiaire jQuery - jquery, click, mouseevent

Je souhaite afficher une boîte de dialogue jQuery-UI sous forme de popuplorsque l'utilisateur clique sur le bouton gauche de la souris ou le bouton du milieu. Cela fonctionne pour le clic gauche (j'obtiens la boîte d'alerte et ensuite la popup) mais ne fonctionne pas pour le milieu (ni boîte d'alerte ni popup). Qu'est-ce qui me manque?

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

Réponses:

17 pour la réponse № 1

Utilisation mousedown ou mouseup au lieu de click. Et (sauf si vous utilisez un très ancienne version de jQuery) utilisation .on() au lieu de .live():

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

... où, dans l'idéal, vous utiliseriez un élément parent beaucoup plus proche du lien que document.

Démo: http://jsfiddle.net/7S2SQ/


3 pour la réponse № 2

Pour que cela fonctionne pleinement dans Firefox (40.0.3), j'ai dû implémenter .on("mouseup", fn), comme suit:

$(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;
});