2010-01-13 44 views
14

Tengo un enlace simple haga clic en la simulación que quiero hacer usando jQuery. Según lo que leí, esto debería funcionar, pero el siguiente código no funciona. No pasa nada si hago lo mismo como parte de algún otro evento o algo así. ¿Pensamientos?el clic de jquery no funciona en el hipervínculo

<script type="text/javascript"> 
    $(function() { 
    $("#lnk_0").click(); 
    }); 
</script> 

<a id="lnk_0" href="http://mydomain.com/mypage.html">link</a> 

Respuesta

23

Ver click():

activa el evento click de cada elemento emparejado .

Hace que todas las funciones que tienen se vinculen a ese evento de clic que se ejecutará .

Lo importante a destacar es que no lo hace duplicado clic en el enlace. Solo desencadena eventos asociados. Si desea cambiar la ubicación:

var link = $("#link_0"); 
link.click(); 
window.location.href = link.attr("href"); 

pero incluso eso es sólo una aproximación, ya que no está pensado para los manipuladores de frenado la propagación de eventos.

+1

bien, gracias por aclarar eso. De hecho, he pasado un tiempo mirando esa documentación exacta. Creo que navegar a la nueva ubicación califica como un "evento asociado". Supongo que, técnicamente, no lo es? :/ Aceptaré esta respuesta, pero la entrada de SLaks a continuación también es muy útil. ¡Deje que esta sea la respuesta para los programadores de una vez por todas! $ ("# my_hyperlink"). click() no hará que el navegador navegue. – Sean

7

Llamar al método click de jQuery invocará cualquier controlador click que haya agregado, pero no hará clic en el enlace.

tiene que escribir:

window.location = $("#lnk_0").attr('href'); 

(Esto supone que no hay ningún controlador de eventos click)


EDIT: En respuesta a su comentario, puede llamar a la IE- Sólo DOM click método, como esto:

if ($("#lnk_0")[0].click) 
    $("#lnk_0")[0].click(); 
else 
    window.location = $("#lnk_0").attr('href'); 
+0

SLaks, gracias por su solución. El único problema es que tiene el efecto secundario realmente molesto de perder el encabezado URL del Referer en IE, que es lo que estoy tratando de evitar. – Sean

-1

no estoy seguro de que resuelve su p problema recise, pero aquí es un fragmento de código que utilizo para simular un clic del usuario:

var target = "..."; 

var e = jQuery.Event("click"); 

target.trigger(e); 

if (!e.isDefaultPrevented() && target.attr("href")) 
    window.location.href = target.attr('href'); 
4

Para permitir la funcionalidad de hipervínculo (flotar, la mano del cursor, etc) cuando anulando con jQuery puede hacer lo siguiente:

<script> 
    $(function() { 
     $("#dialog-modal").dialog({ 
      autoOpen: false, 
      height: 320, 
      modal: true 
     }); 

     $("#open-modal").click(function() { 
      $("#dialog-modal").dialog("open"); 
     });   
</script> 
<a href="javascript:return true" id="open-modal">Open Modal</a> 

<div id="dialog-modal" title="Hello World"> 
Hello 
</div> 
Cuestiones relacionadas