2011-08-25 22 views
5

¿Cómo se puede activar la acción/evento predeterminado de un enlace HTML (elemento de anclaje)? Es decir, usar JavaScript/jQuery para "hacer clic" en un enlace HTML existente, como si el usuario hubiera hecho clic en él.Cómo desencadenar la acción/evento predeterminado de un enlace HTML (elemento de anclaje)?

Simplemente utilizando .click() parece que no funciona.

$('#alink').click(); 
// the nothing happening 

Para este HTML:

<a id="alink" href="http://google.com" target="_blank">a link</a> 

Ejemplo violín: http://jsfiddle.net/dCfD8/

prefiero no crear una nueva ventana en JavaScript (y cuidar de cualquier otra cosa que necesita ser manejado cuando una se hace clic en el enlace).

+1

ver esto: http://stackoverflow.com/questions/1694595/can-i-call-jquery -click-to-follow-an-a-link-if-i-havent-bound-a-event-handl –

+0

@Digital Plane, gracias, no vi ese antes. Aunque sería interesante saber si hay algún cambio en el asunto, o la respuesta "no se puede hacer" aún se aplica incluso para los últimos navegadores (por ejemplo, Chrome 13+). – Qtax

Respuesta

2

Usted puede desencadenar el evento click usando un simple método trigger en jQuery.

$('#alink').trigger('click'); 

Sin embargo, Aviso, que incluso en el evento se activa, el navegador no seguirá el enlace href. La única forma de seguir el href es hacer clic en él con el mouse.

Por lo que yo sé, no hay forma de obligar a un enlace a comportarse como si hubiera sido cliqueado. Debe cambiar la ubicación del documento o algo así para navegar realmente entre las páginas.

+0

Aceptado por "no hay forma de obligar a un enlace a comportarse como si se hubiera hecho clic", que http://stackoverflow.com/questions/1694595/can-i-call-jquery-click-to-follow-an- a-link-if-i-havent-bound-a-event-handl también establece. – Qtax

-1

probar esto:

$('#alink').trigger('click'); 
+0

No funciona (al menos en el violín). – Qtax

+1

esto invoca solo los eventos jQuery asociados al clic, si desea "emular" que el usuario haga clic en un anclaje para redirigir a otra url, puede hacer esto: 'document.location = $ ('# alink'). Attr ('href '); ' –

+0

No funcionaría con' target = "_ blank" ', o cualquier otro atributo de enlace especial. – Qtax

1

Ampliando el comentario de Fabio Cicerchia a su propio mensaje: Puede utilizar window.open:

var link = $('#alink'); 
var target = link.attr("target"); 
window.open(link.attr("href"), target ? target : "_self"); 
+0

+1. Parece que eso podría funcionar. Pero me preocupa que los manipuladores/bloqueadores de ventanas emergentes (predeterminados) puedan bloquear eso, mientras que afectarían a un usuario normal al hacer clic en un enlace. – Qtax

+0

Sí, la mayoría de los bloqueadores de ventanas emergentes bloquearán esto, si no se desencadena por una interacción del usuario. Puede combinarlo con 'doument.location = ...' en los casos donde el objetivo no está configurado. Tal vez deberías explicar el trasfondo, por qué necesitas hacer esto. Quizás de esa manera se puedan encontrar alternativas. – RoToRa

0
<script src='jquery lib source' ></script> 
    <script> 
    function force() 
    { ...do something...to fill page2 
     $('#gopage2').trigger('submit'); 
    }  
    </script> 
    <form action='#page2' id='gopage2'> 
    </form> 

    ... 
    <span name='#page2'>This is page2</span> 
+1

Considere agregar alguna explicación a su respuesta, en lugar de solo un código. Nuestro objetivo aquí es educar a las personas para que entiendan la respuesta y puedan aplicarla en otras situaciones. Si comenta su código y agrega una explicación, hará que su respuesta sea más útil no solo para la persona que hizo la pregunta esta vez, sino para cualquier persona en el futuro que tenga el mismo problema. – starsplusplus

Cuestiones relacionadas