Tengo un problema al fingir un clic de anclaje a través de jQuery: ¿Por qué aparece mi caja gruesa la primera vez que hago clic en el botón de entrada, pero no la segunda o la tercera vez?
Aquí está mi código:
<input onclick="$('#thickboxId').click();" type="button" value="Click me" />
<a id="thickboxId" href="myScript.php" class="thickbox" title="">Link</a>
Siempre funciona cuando hago clic directamente en el enlace, pero no si trato de activar el cuadro grueso mediante el botón de entrada. Esto está en FF. Para Chrome parece funcionar todo el tiempo. ¿Alguna pista?
Respuestas:
Intenta evitar incluir tus llamadas de jQuery de esa manera. Coloque una etiqueta de script en la parte superior de la página para vincularla al
click
evento:Editar:
Si está tratando de simular que un usuario haga clic físicamente en el enlace, entonces no creo que sea posible. Una solución alternativa sería actualizar el
click
evento del botón para cambiar elwindow.location
Javascript en:Edición 2:
Ahora que me doy cuenta de que Thickbox es un widget personalizado de jQuery UI, encontré las instrucciones aquí :
Instrucciones:
Crear un elemento de enlace (
<a href>
)Dele al enlace un atributo de clase con un valor de thickbox (
class="thickbox"
)En el
href
atributo del enlace, agregue el siguiente ancla:#TB_inline
En el
href
atributo después de#TB_inline
agregar la siguiente cadena de consulta en el ancla:? height = 300 & width = 300 & inlineId = myOnPageContent
Cambie los valores de altura, ancho e inlineId en la consulta en consecuencia (inlineID es el valor de ID del elemento que contiene el contenido que desea mostrar en un ThickBox.
Opcionalmente, puede agregar modal = true a la cadena de consulta (por ejemplo
#TB_inline?height=155&width=300&inlineId=hiddenModalContent&modal=true
) para que cerrar un ThickBox requiera llamar a latb_remove()
función desde el ThickBox. Vea el ejemplo de contenido modal oculto, donde debe hacer clic en sí o no para cerrar ThickBox.fuente
.prop()
lugar deattr()
obtener la URL resuelta.Lo que funcionó para mí fue:
fuente
focus
click
[0]
indica el primer elemento de la matriz: un selector devuelve 0 o más elementos cuando se ejecuta. Es desafortunado que.click()
no parezca funcionar directamente aquí, ya que aparentemente otras invocaciones se aplican a colecciones de elementos de selectores consistentemente en todo el marco.[0]
o.get(0)
son lo mismo. Estos usan la versión DOM del elemento, en lugar de la versión jQuery. La.click()
función en este caso no es el evento de clic jQuery, sino el evento nativo.Recientemente he encontrado cómo activar el evento de clic del mouse a través de jQuery.
fuente
Este enfoque funciona en Firefox, Chrome e IE. Espero que ayude a alguien:
fuente
Aunque esta es una pregunta muy antigua, encontré algo más fácil de manejar esta tarea. Es el complemento jquery desarrollado por el equipo jquery UI llamado simulate. puedes incluirlo después de jquery y luego puedes hacer algo como
funciona bien en Chrome, Firefox, Opera e IE10. Puede descargarlo desde https://github.com/eduardolundgren/jquery-simulate/blob/master/jquery.simulate.js
fuente
simulate()
es que envía los eventos de jQuery y activa la acción del navegador nativo. Esta es ahora la respuesta correcta +1El título de la pregunta dice "¿Cómo puedo simular un clic de anclaje en jQuery?". Bueno, puedes usar los métodos "trigger" o "triggerHandler", así:
No probado, este script real, pero he usado
trigger
et al antes, y funcionaron bien.ACTUALIZACIÓN en
triggerHandler
realidad no hace lo que quiere el OP. Creo que 1421968 proporciona la mejor respuesta a esta pregunta.fuente
Sugeriría mirar la API de Selenium para ver cómo activan un clic en un elemento de manera compatible con el navegador:
Busca la
BrowserBot.prototype.triggerMouseEvent
función.fuente
Creo que puedes usar:
Esto activará fácilmente la función de clic, sin hacer clic en ella.
fuente
¿Necesitas fingir un clic de anclaje? Desde el sitio de thickbox:
Si eso es aceptable, debería ser tan fácil como poner la clase thickbox en la entrada:
De lo contrario, recomendaría usar Firebug y colocar un punto de interrupción en el método onclick del elemento de anclaje para ver si solo se activa en el primer clic.
Editar:
De acuerdo, tuve que probarlo por mí mismo y para mí casi exactamente su código funcionó tanto en Chrome como en Firefox:
La ventana emergente no importa si hago clic en la entrada o en el elemento de anclaje. Si el código anterior funciona para usted, sugiero que su error se encuentre en otra parte y que intente aislar el problema.
Otra posibilidad es que estamos usando diferentes versiones de jquery / thickbox. Estoy usando lo que obtuve de la página de thickbox: jquery 1.3.2 y thickbox 3.1.
fuente
Puede crear un formulario a través de jQuery o en el código de la página HTML con una acción que imite su enlace href:
<a id="anchor_link" href="somepath.php">click here</a>.
fuente
Para simular un clic en un ancla mientras aterrizaba en una página, simplemente utilicé jQuery para animar la propiedad scrollTop en
$(document).ready.
Sin necesidad de un disparador complejo, y eso funciona en IE 6 y en cualquier otro navegador.fuente
Si no necesita usar JQuery, como yo no. He tenido problemas con la función de navegador cruzado de
.click()
. Entonces uso:fuente
En Javascript puedes hacer así
y puedes usarlo como
fuente
Utilizando el script de Jure, hice esto para "hacer clic" fácilmente en tantos elementos como desee.
¡Acabo de usar Google Reader en más de 1600 artículos y funcionó perfectamente (en Firefox)!
fuente
createEventObject
en IE es más para crear un objeto de evento para pasar a los controladores, en lugar de enviar un evento sintético. Los IEfireEvent
pueden estar más cercadispatchEvent
, pero solo activará oyentes, no acciones predeterminadas del navegador. Sin embargo, en IE solo puede llamar alclick
método.JQuery('#left').triggerHandler('click');
funciona bien en Firefox e IE7. No lo he probado en otros navegadores.Si desea activar clics automáticos de usuario, haga lo siguiente:
fuente
Esto no funciona en el navegador nativo de Android para hacer clic en "elemento de entrada oculta (archivo)":
Pero esto funciona:
fuente
Al tratar de simular un 'clic' en las pruebas unitarias con la flecha giratoria jQuery UI, no pude obtener ninguna de las respuestas anteriores para trabajar. En particular, estaba tratando de simular el 'giro' de seleccionar la flecha hacia abajo. Miré las pruebas unitarias spinner jQuery UI y utilizar el siguiente método, que trabajó para mí:
fuente