trigger link jquery html onclick thickbox

link - ¿Cómo puedo simular un clic de anclaje a través de jquery?



jquery click link (17)

¿Necesitas falsificar un clic de anclaje? Desde el sitio de thickbox:

ThickBox se puede invocar desde un elemento de enlace, elemento de entrada (normalmente un botón) y el elemento de área (mapas de imágenes).

Si eso es aceptable, debería ser tan fácil como poner la clase thickbox en la entrada misma:

<input id="thickboxButton" type="button" class="thickbox" value="Click me">

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 activó en el primer clic.

Editar:

De acuerdo, tuve que probarlo para mí y para mí, casi exactamente tu código funcionó tanto en Chrome como en Firefox:

<html> <head> <link rel="stylesheet" href="thickbox.css" type="text/css" media="screen" /> </head> <body> <script src="jquery-latest.pack.js" type="text/javascript"></script> <script src="thickbox.js" type="text/javascript"></script> <input onclick="$(''#thickboxId'').click();" type="button" value="Click me"> <a id="thickboxId" href="myScript.php" class="thickbox" title="">Link</a> </body> </html>

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 thickbox - jquery 1.3.2 y thickbox 3.1.

Tengo un problema con la falsificación de 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 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 intento activar el thickbox con el botón de entrada. Esto está en FF. Para Chrome parece funcionar todo el tiempo. ¿Algún consejo?


Al tratar de simular un ''clic'' en las pruebas unitarias con jQuery UI spinner, no pude obtener ninguna de las respuestas anteriores para que funcione. En particular, estaba tratando de simular el ''giro'' de seleccionar la flecha hacia abajo. Miré las pruebas de jQuery UI spinner unit y usan el siguiente método, que funcionó para mí:

element.spinner( "widget" ).find( ".ui-spinner-up" ).mousedown().mouseup();


Aunque esta es una pregunta muy antigua, encontré algo más fácil de manejar en esta tarea. Es un plugin jquery desarrollado por el equipo de jquery UI llamado simulate. puedes incluirlo después de jquery y luego puedes hacer algo como

<a href="http://.com/"></a> $(''a'').simulate(''click'');

funciona bien en Chrome, Firefox, Opera e IE10. Puedes descargarlo de https://github.com/eduardolundgren/jquery-simulate/blob/master/jquery.simulate.js


Creo que puedes usar:

$(''#yourLink'').bind(''click'', function() { //Do something over here }); $(''#yourLink'').trigger(''click'');

Esto activará fácilmente la función de clic, sin hacer clic en ella.


El 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í:

<script type="text/javascript" src="path/to/jquery.js"></script> <script type="text/javascript" src="path/to/thickbox.js"></script> <script type="text/javascript"> $(function() { $(''#btn'').click(function() { $(''#thickboxId'').triggerHandler(''click''); }) }) </script> ... <input id="btn" type="button" value="Click me"> <a id="thickboxId" href="myScript.php" class="thickbox" title="">Link</a>

No probado, esta secuencia de comandos real, pero he usado trigger et al antes, y funcionaron de maravilla.

ACTUALIZAR
triggerHandler realidad no hace lo que el OP quiere. Creo que 1421968 proporciona la mejor respuesta a esta pregunta.


En Javascript puedes hacer esto

function submitRequest(buttonId) { if (document.getElementById(buttonId) == null || document.getElementById(buttonId) == undefined) { return; } if (document.getElementById(buttonId).dispatchEvent) { var e = document.createEvent("MouseEvents"); e.initEvent("click", true, true); document.getElementById(buttonId).dispatchEvent(e); } else { document.getElementById(buttonId).click(); } }

y puedes usarlo como

submitRequest("target-element-id");


Esto no funciona en el navegador nativo de Android para hacer clic en "elemento de entrada oculto (archivo)":

$(''a#swaswararedirectlink'')[0].click();

Pero esto funciona:

$("#input-file").show(); $("#input-file")[0].click(); $("#input-file").hide();


Intente evitar incluir sus llamadas de jQuery así. Coloque una etiqueta de script en la parte superior de la página para enlazar al evento click :

<script type="text/javascript"> $(function(){ $(''#thickboxButton'').click(function(){ $(''#thickboxId'').click(); }); }); </script> <input id="thickboxButton" type="button" value="Click me"> <a id="thickboxId" href="myScript.php" class="thickbox" title="">Link</a>

Editar:

Si intentas simular un usuario haciendo clic físicamente en el enlace, entonces no creo que eso sea posible. Una solución alternativa sería actualizar el evento de click del click para cambiar la window.location la window.location en Javascript:

<script type="text/javascript"> $(function(){ $(''#thickboxButton'').click(function(){ window.location = $(''#thickboxId'').attr(''href''); }); }); </script>

Editar 2:

Ahora que me doy cuenta de que Thickbox es un widget de interfaz de usuario jQuery personalizado, encontré las instrucciones here :

Instrucciones:

  • Crear un elemento de enlace ( <a href> )
  • Dale al enlace un atributo de clase con un valor de thickbox ( class="thickbox" )
  • En el atributo href del enlace, agregue el siguiente delimitador: #TB_inline
  • En el atributo href después de #TB_inline agrega la siguiente cadena de consulta al delimitador:

    ? height = 300 & width = 300 & inlineId = myOnPageContent

  • Cambie los valores de altura, ancho e Id. En línea en la consulta en consecuencia (inlineID es el valor de ID del elemento que contiene el contenido que le gustaría 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 la función tb_remove() desde ThickBox. Consulte el ejemplo de contenido modal oculto, donde debe hacer clic en sí o no para cerrar el ThickBox.

Lo que funcionó para mí fue:

$(''a.mylink'')[0].click()


Para simular un clic en un ancla al aterrizar en una página, acabo de utilizar jQuery para animar la propiedad scrollTop en $(document).ready. No es necesario un activador complejo, y eso funciona en IE 6 y en cualquier otro navegador.


Puede crear un formulario a través de jQuery o en el código de página HTML con una acción que imite su href de enlace:

<a id="anchor_link" href="somepath.php">click here</a>.

var link = $(''#anchor_link'').attr(''href''); $(''body'').append(''<form id="new_form" action="''+link+''"></form>''); $(''#new_form'').submit();


Recientemente descubrí cómo activar el evento de clic del mouse mediante jQuery.

<script type="text/javascript"> var a = $(''.path > .to > .element > a'')[0]; var e = document.createEvent(''MouseEvents''); e.initEvent( ''click'', true, true ); a.dispatchEvent(e); </script>


Si no necesita usar JQuery, como yo no. He tenido problemas con el navegador de .click() . Entonces yo uso:

eval(document.getElementById(''someid'').href)


Sugeriría mirar la API de Selenium para ver cómo activan un clic en un elemento de una manera compatible con el navegador:

Busque la función BrowserBot.prototype.triggerMouseEvent .


Utilizando el guión de Jure, hice esto para hacer "clic" fácilmente en todos los elementos que quisiera.
¡Acabo de usarlo Google Reader en más de 1600 elementos y funcionó perfectamente (en Firefox)!

var e = document.createEvent(''MouseEvents''); e.initEvent( ''click'', true, true ); $(selector).each(function(){this.dispatchEvent(e);});


este enfoque funciona en Firefox, Chrome e IE. Espero que ayude a alguien:

var comp = document.getElementById(''yourCompId''); try { //in firefox comp.click(); return; } catch(ex) {} try { // in chrome if(document.createEvent) { var e = document.createEvent(''MouseEvents''); e.initEvent( ''click'', true, true ); comp.dispatchEvent(e); return; } } catch(ex) {} try { // in IE if(document.createEventObject) { var evObj = document.createEventObject(); comp.fireEvent("onclick", evObj); return; } } catch(ex) {}


JQuery(''#left'').triggerHandler(''click''); funciona bien en Firefox e IE7. No lo he probado en otros navegadores.

Si desea activar los clics automáticos del usuario, haga lo siguiente:

window.setInterval(function() { $(''#left'').triggerHandler(''click''); }, 1000);