Tenho um problema ao fingir um clique de âncora via jQuery: Por que minha caixa grossa aparece na primeira vez que clico no botão de entrada, mas não na segunda ou terceira vez?
Aqui está o meu código:
<input onclick="$('#thickboxId').click();" type="button" value="Click me" />
<a id="thickboxId" href="myScript.php" class="thickbox" title="">Link</a>
Ele sempre funciona quando clico diretamente no link, mas não se eu tentar ativar a caixa espessa por meio do botão de entrada. Isso está no FF. Para o Chrome, parece funcionar sempre. Alguma dica?
Respostas:
Tente evitar incluir suas chamadas jQuery dessa maneira. Coloque uma tag de script na parte superior da página para vincular ao
click
evento:Editar:
Se você está tentando simular um usuário clicando fisicamente no link, não acredito que isso seja possível. Uma solução alternativa seria atualizar o
click
evento do botão para alterar owindow.location
Javascript:Edição 2:
Agora que percebi que o Thickbox é um widget personalizado da interface do usuário do jQuery, encontrei as instruções aqui :
Instruções:
Crie um elemento de link (
<a href>
)Atribua ao link um atributo de classe com um valor de thickbox (
class="thickbox"
)No
href
atributo do link, adicione a seguinte âncora:#TB_inline
No
href
atributo após a#TB_inline
inclusão da seguinte cadeia de consulta na âncora:? height = 300 & width = 300 & inlineId = myOnPageContent
Altere os valores de altura, largura e inlineId na consulta adequadamente (inlineID é o valor de ID do elemento que contém o conteúdo que você deseja mostrar em um ThickBox.
Opcionalmente, você pode adicionar modal = true à string de consulta (por exemplo
#TB_inline?height=155&width=300&inlineId=hiddenModalContent&modal=true
) para que o fechamento de um ThickBox exija a chamada datb_remove()
função de dentro do ThickBox. Veja o exemplo de conteúdo modal oculto, no qual você deve clicar em Sim ou Não para fechar o ThickBox.fonte
.prop()
vez deattr()
obter o URL resolvido.O que funcionou para mim foi:
fonte
focus
vez declick
:)[0]
indica o primeiro elemento da matriz - um seletor retorna 0 ou mais elementos quando é executado. É lamentável que.click()
isso não pareça funcionar diretamente aqui, pois aparentemente outras invocações são aplicadas a coleções de elementos de seletores de forma consistente em toda a estrutura.[0]
ou.get(0)
são os mesmos. Eles usam a versão DOM do elemento, em vez da versão jQuery. A.click()
função neste caso não é o evento de clique do jQuery, mas o nativo.Eu descobri recentemente como acionar um evento de clique do mouse via jQuery.
fonte
Essa abordagem funciona no Firefox, Chrome e IE. espero que ajude alguém:
fonte
Embora essa seja uma pergunta muito antiga, encontrei algo mais fácil de lidar com essa tarefa. É o plugin jquery desenvolvido pela equipe da interface do usuário jquery chamada simulate. você pode incluí-lo após o jquery e, em seguida, pode fazer algo como
funciona bem no chrome, firefox, opera e IE10. você pode baixá-lo em https://github.com/eduardolundgren/jquery-simulate/blob/master/jquery.simulate.js
fonte
simulate()
é que ele envia os eventos do jQuery , além de acionar a ação nativa do navegador. Esta é agora a resposta correta +1O título da pergunta diz "Como posso simular um clique de âncora no jQuery?". Bem, você pode usar os métodos "trigger" ou "triggerHandler", assim:
Não testado, esse script real, mas eu usei
trigger
et al antes, e eles funcionaram bem.ATUALIZAÇÃO
triggerHandler
não faz o que o OP quer. Eu acho que 1421968 fornece a melhor resposta para essa pergunta.fonte
Sugiro consultar a API Selenium para ver como eles acionam um clique em um elemento de maneira compatível com o navegador:
Procure a
BrowserBot.prototype.triggerMouseEvent
função.fonte
Eu acredito que você pode usar:
Isso acionará facilmente a função de clique, sem realmente clicar nela.
fonte
Você precisa fingir um clique de âncora? No site do thickbox:
Se isso for aceitável, deve ser tão fácil quanto colocar a classe thickbox na própria entrada:
Caso contrário, eu recomendaria usar o Firebug e colocar um ponto de interrupção no método onclick do elemento anchor para ver se ele foi acionado apenas no primeiro clique.
Editar:
Ok, eu tive que tentar por mim mesmo e por mim exatamente o seu código funcionou no Chrome e no Firefox:
A janela aparece, não importa se eu clico na entrada ou no elemento âncora. Se o código acima funcionar para você, sugiro que seu erro esteja em outro lugar e que você tente isolar o problema.
Outra possibilidade é que estamos usando versões diferentes do jquery / thickbox. Estou usando o que obtive da página do thickbox - jquery 1.3.2 e thickbox 3.1.
fonte
Você pode criar um formulário via jQuery ou no código da página HTML com uma ação que imita o seu link href:
<a id="anchor_link" href="somepath.php">click here</a>.
fonte
Para simular um clique em uma âncora durante o pouso em uma página, usei o jQuery para animar a propriedade scrollTop em
$(document).ready.
Não há necessidade de um gatilho complexo e que funcione no IE 6 e em qualquer outro navegador.fonte
Se você não precisar usar o JQuery, como eu não. Eu tive problemas com a função de navegador cruzado de
.click()
. Então eu uso:fonte
Em Javascript, você pode fazer assim
e você pode usá-lo como
fonte
Usando o script de Jure, eu fiz isso para "clicar" facilmente em quantos elementos você quiser.
Usei o Google Reader em mais de 1600 itens e funcionou perfeitamente (no Firefox)!
fonte
createEventObject
no IE é mais para criar um objeto de evento para passar para manipuladores, em vez de despachar um evento sintético. O IEfireEvent
pode estar mais próximodispatchEvent
, mas apenas acionará os ouvintes - não as ações padrão do navegador. No entanto, no IE, você pode simplesmente chamar oclick
métodoJQuery('#left').triggerHandler('click');
funciona bem no Firefox e IE7. Não testei em outros navegadores.Se desejar acionar cliques automáticos do usuário, faça o seguinte:
fonte
Isso não funciona no navegador nativo do Android para clicar em "elemento de entrada (arquivo) oculto":
Mas isso funciona:
fonte
Ao tentar simular um 'clique' nos testes de unidade com o jQuery UI spinner, não consegui obter nenhuma das respostas anteriores para funcionar. Em particular, eu estava tentando simular o 'giro' de selecionar a seta para baixo. Eu olhei para os testes de unidade giratória jQuery UI e eles usam o seguinte método, que funcionou para mim:
fonte