Déclencher l'événement onclick en utilisant le clic du milieu

J'utilise l'événement onclick d'un lien haché pour ouvrir un <div> comme pop-up. Mais le clic du milieu ne déclenche pas l'événement onclick , mais ne prend que la valeur de l'attribut href du lien et charge l'URL dans une nouvelle page. Comment puis-je utiliser le clic central pour ouvrir le <div> tant que pop-up?

La réponse de beggs est correcte, mais il semble que vous souhaitez empêcher l'action par défaut du clic du milieu. Dans ce cas, incluez les éléments suivants

 $("#foo").on('click', function(e) { if( e.which == 2 ) { e.preventDefault(); alert("middle button"); } }); 

PreventDefault () arrête l'action par défaut de l'événement.

Vous pouvez utiliser

Event.button

Pour identifier le bouton de la souris qui a été cliqué.

Renvoie une valeur entière indiquant le bouton qui a changé d'état.

  • 0 pour le «clic» standard, généralement bouton gauche
  • 1 pour le bouton du milieu, généralement le clic de la roue
  • 2 pour le bouton droit, généralement clic droit

Notez que cette convention n'est pas suivie dans Internet Explorer: voir QuirksMode pour plus de détails.

L'ordre des boutons peut être différent selon la façon dont le dispositif de pointage a été configuré.

Lire aussi

Quel bouton de souris a été cliqué?

Il existe deux propriétés pour savoir quel bouton de souris a été cliqué: quel bouton et. Veuillez noter que ces propriétés ne fonctionnent pas toujours sur un événement de clic. Pour détecter en toute sécurité un bouton de la souris, vous devez utiliser les événements mousedown ou mouseup.

La méthode appropriée consiste à utiliser .on , car .live a été obsolète puis retiré de jQuery:

 $("#foo").on('click', function(e) { if( e.which == 2 ) { e.preventDefault(); alert("middle button"); } }); 

Ou si vous voulez que la sensation "live" ressemble et #foo n'est pas sur votre page lors du démarrage du document:

 $(document).on('click', '#foo', function(e) { if( e.which == 2 ) { e.preventDefault(); alert("middle button"); } }); 

Réponse originale

JQuery fournit un attribut .which sur l'événement qui donne l'id de bouton de clic de gauche à droite comme 1, 2, 3. Dans ce cas, vous voulez 2.

Usage:

 $("#foo").live('click', function(e) { if( e.which == 2 ) { alert("middle button"); } }); 

La réponse d'Adamantium fonctionnera également, mais vous devez surveiller l'IE comme il le remarque:

 $("#foo").live('click', function(e) { if((!$.browser.msie && e.button == 1) || ($.browser.msie && e.button == 2)) { alert("middle button"); } }); 

Rappelez-vous également que l'attribut .button est 0 indexé et non indexé 1 comme .which .

Je sais que je suis en retard pour la fête, mais pour ceux qui ont encore du mal à gérer le clic du milieu, vérifiez si vous délérez l'événement. En cas de délégation, l'événement de click ne déclenche pas. Comparer:

Cela fonctionne pour les clics du milieu:

 $('a').on('click', function(){ console.log('middle click'); }); 

Cela ne fonctionne pas pour les clics du milieu:

 $('div').on('click', 'a', function(){ console.log('middle click'); }); 

Si vous devez toujours suivre le clic du milieu en utilisant la délégation d'événement , la seule façon de circuler comme indiqué dans le ticket jQuery correspondant est d'utiliser mousedown ou mouseup place. Ainsi:

Cela fonctionne pour les clics intermédiaires délégués:

 $('div').on('mouseup', 'a', function(){ console.log('middle click'); }); 

Voyez-le en ligne ici .

Cette question est un peu vieille, mais j'ai trouvé une solution:

 $(window).on('mousedown', function(e) { if( e.which == 2 ) { e.preventDefault(); } }); 

Chrome ne déclenche pas "click" événement pour la roue de la souris

Travailler dans FF et Chrome

Je déteste généralement quand les gens offrent des solutions de rechange au lieu de solutions, mais comme des solutions ont déjà été fournies, je vais rompre ma propre règle.

Les sites Web où la fonctionnalité de clic central est remplacé ont tendance à vraiment, me gênent vraiment. Je fais généralement un clic central car je souhaite ouvrir le nouveau contenu dans un nouvel onglet tout en ayant une vue dégagée sur le contenu actuel. Chaque fois que vous pouvez quitter la fonctionnalité du clic central seul et rendre le contenu pertinent disponible via l'attribut HREF de votre élément cliqué, je crois fermement que c'est ce que vous devriez faire.