2008-12-05 25 views
24

Estoy tratando de hacer clic en un enlace usando jquery. Solo parece haber un evento de clic que replica "onclick" (es decir, entrada de usuario). ¿Es posible usar jquery para hacer clic en un enlace?¿Hay un método jQuery Click?

+3

¿Desea emular mediante programación el clic en un enlace? – kgiannakakis

Respuesta

35

Desde su respuesta:

$("a[0]") 

no es un selector válido. para conseguir la primera una en la página de uso:

$("a:first") 

o

$("a").eq(0). 

Así que para el selector en su respuesta:

$("table[1]/tr[1]/td[1]/a").trigger('click'); 

escritura

$("table").eq(1).children("tr").eq(1).children('td').eq(1).children('a').click(); 

Nota cómo esto hará clic en todos los enlaces en la segunda tabla e celda de la segunda fila de la tabla en la segunda tabla en su página.
Si se utiliza este método para redirigir la página a la href del método a los siguientes es un poco más bonitas:

document.location = $("table").eq(1).children("tr").eq(1).children('td').eq(1).children('a').attr('href'); 

Nota cómo esto va a establecer la ubicación del documento a la href de la primera A que se encuentra en el segundo celda de la tabla de la segunda fila de la tabla que se encuentra en la segunda tabla de la página.
Si quiere hacer coincidir los primeros elementos use eq (0) en lugar de eq (1).

EDITAR
Si realmente quieres hacer esto-1337 haxxor

$("table:eq(1) > tr:eq(1) > td:eq(1) > a").click(); 

Sin embargo creo que el otro método es más readible.

EDITAR

bien, a partir de la próxima respuesta/pregunta thingie
¿Qué hay en realidad no hacer clic en el enlace, pero sólo la creación de la cadena document.location a ella:

document.location = $("table").eq(0).children("tr").eq(0).children('td').eq(0).children('a').eq(0).attr('href'); 
+4

Gracias Pim. Estaba intentando replicar el comportamiento del usuario, pero esa es una buena solución. Muchas gracias. – jedd

+0

Si esta es la respuesta que usará, debería aceptarla. –

+1

El cambio de "document.location" tiene un solo defecto: rompe el botón Atrás ... – BlaM

4

$ (- some object -). Trigger ('click') debería hacer el truco.

+0

La documentación y el ejemplo de código están aquí http://docs.jquery.com/Events/trigger –

+0

Funciona, pero también podría hacer $ (objeto) .click() –

8

prefiero $(-some object-).click() para facilitar la lectura

Si pasa el método click() una función, se comporta como un enlace de evento de clic:.

es decir, $ (- algún objeto -) click (function() {-do cosas-})

0

Pruébalo de esta manera:

$("table:first").find("tr:first").find("td:first").find("a:first").click(); 

Eso desencadenará el evento onclick del primero a en la primera celda de la primera fila en la primera tabla ... y es muy legible en sí mismo.

+0

No quiero activar el evento onclick !!!!! ¡Quiero hacer clic en el objeto programáticamente! equivalente de Javascript: window.document.getElementsByTagName ("tabla") [0] .rows [0] .cells [1] .children [0] .click(); – jedd

+0

"programáticamente haga clic en el objeto" ¿Qué significa eso si no activa el evento onclick del elemento recuperado? Desea asignar una función onclick, o? –

2
$("table:first").find("tr:first").find("td:first").find("a:first")[0].click(); 

Esto funcionará en Internet Explorer si esa es su único objetivo, de lo contrario usted es stucked con la solución document.location.

4

Esto funciona correctamente:

$(document).ready(function() { 
     $("#horizontalSlideButton").trigger('click'); 
    }); 

Dónde horizontalSlideButton es el ID del enlace que desea desencadenar el evento Click para.

Tan pronto como se carga el DOM, el contenido de $ (document) ready (function() {} se cargan.

Por favor marque si esto ayuda!

+0

sí .. trabajo como un encanto :) –

3

que tenía un problema similar y encontrado que mediante la creación de un objeto de evento falso y luego despacharlo usando dispatchEvent() replica un usuario haga clic muy bien:.

var event = document.createEvent("HTMLEvents"); 
event.initEvent("click", true, true); 
document.getElementById('myID').dispatchEvent(event); 

Obviamente, esto no está usando jQuery, pero podría ayudar en su tarea

0

Yo prefiero usar la función en vivo, como (para una clase)

$(document).ready(function() { 
    $(".myclass").live('click', function(){//do something}); 

}); 

o para un id

$(document).ready(function() { 
    $("#myid").live('click', function(){//do something}); 

}); 

Puedo usar un span class con el estilo de mi enlace y darle una clase o ID como

<span class="link"><a href="javascript:void(0);" target="_new">my link/a></span>