Estou usando o onclick
evento de um link com hash para abrir <div>
um pop-up. Mas o clique do meio não aciona o onclick
evento, mas apenas pega o href
valor do atributo do link e carrega o URL em uma nova página. Como posso usar o clique do meio para abrir o <div>
pop-up?
javascript
jquery
Sadesh Kumar N
fonte
fonte
Respostas:
EDITAR
Esta resposta foi descontinuada e não funciona no Chrome. Você provavelmente vai acabar usando o evento auxlink , mas consulte as outras respostas abaixo.
/EDITAR
A resposta de Beggs está correta, mas parece que você deseja evitar a ação padrão do clique do meio. Nesse caso, inclua o seguinte
preventDefault () irá parar a ação padrão do evento.
fonte
.live
foi suspenso e removido em favor de.on
2
?Para que o botão do meio / roda do mouse seja detectado, você deve usar o evento
auxclick
. Por exemplo:Então, em seu arquivo de script
Se você quiser fazer isso em JavaScript (sem usar o atributo HTML
onauxclick
), váaddEventListener
para o elemento:Confira a página mdn sobre o
auxclick
evento aqui .fonte
if(event.button==1)
cláusula, esta é a única resposta que funciona.auxclick
evento e verificar o valor dee.button == 1
. Eu editei a resposta.Você pode usar
event.button
para identificar qual botão do mouse foi clicado.
Retorna um valor inteiro indicando o botão que mudou de estado.
Observe que essa convenção não é seguida no Internet Explorer: consulte QuirksMode para obter detalhes.
A ordem dos botões pode ser diferente dependendo de como o dispositivo apontador foi configurado.
Leia também
Qual botão do mouse foi clicado?
fonte
event.which
como foi padronizado em navegadores na fonte jQuery - linha 2756 -if ( !event.which && event.button ) event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));
MouseEvent.which
não é definido em nenhuma especificação, masMouseEvent.button
é definido em Eventos DOM L2.event.which
mas deveria ter elaborado queMouseEvent.which
não faz parte da especificação oficial.Normalmente odeio quando as pessoas oferecem alternativas em vez de soluções, mas como as soluções já foram fornecidas, vou quebrar minha própria regra.
Sites onde o recurso de clique do meio é substituído tendem a me incomodar muito, muito mesmo. Normalmente, clico com o botão do meio porque desejo abrir o novo conteúdo em uma nova guia ao mesmo tempo que tenho uma visão desobstruída do conteúdo atual. Sempre que você pode deixar a funcionalidade do botão do meio sozinha e disponibilizar o conteúdo relevante por meio do atributo HREF do seu elemento clicado, acredito fortemente que é isso que você deve fazer.
fonte
jQuery fornece um
.which
atributo no evento que fornece o id do botão de clique da esquerda para a direita como 1, 2, 3. Neste caso, você deseja 2.Uso:
A resposta de Adamantium também funcionará, mas você precisa estar atento ao IE enquanto ele observa:
Lembre-se também de que o
.button
atributo é indexado 0 e não indexado 1 como.which
.fonte
Esta questão é um pouco antiga, mas encontrei uma solução:
O Chrome não dispara o evento "clique" para a roda do mouse
Trabalho em FF e Chrome
fonte
e.preventDefault()
seja chamado.O método adequado é usar
.on
, pois.live
foi descontinuado e removido do jQuery:Ou se você quiser a sensação de "ao vivo" e
#foo
não estiver na sua página no início do documento:resposta original
fonte
click
não funciona para o botão do meio do mouse em navegadores como Firefox e Chrome.Sei que estou atrasado para a festa, mas para quem ainda está com problemas em lidar com o click do meio, verifique se você delega o evento. Em caso de delegação, o
click
evento não dispara. Comparar:Isso funciona para cliques do meio:
Isso não funciona para cliques do meio:
Se você ainda precisa rastrear o clique do meio usando a delegação de evento , a única maneira de contornar, conforme indicado no tíquete jQuery correspondente , é usar
mousedown
ou emmouseup
vez disso. Igual a:Isso funciona para cliques intermediários delegados:
Veja online aqui .
fonte
click
não funciona para cliques do meio como em seu primeiro exemplo.