2010-01-13 22 views
14

Ho una semplice simulazione di collegamento che voglio fare usando jQuery. Da quello che ho letto, questo dovrebbe funzionare, ma il codice qui sotto non funziona. Nulla accade se faccio la stessa cosa di una parte di qualche altro evento o qualcosa del genere. Pensieri?jquery click non funziona sul collegamento ipertestuale

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

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

risposta

23

Vedi click():

attiva l'evento click di ogni elemento abbinato .

Cause tutte le funzioni che hanno stato associato a quell'evento di clic per essere eseguito.

La cosa importante da notare è che non duplicato cliccando sul link. Attiva solo eventi associati. Se si desidera modificare la posizione:

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

ma anche questo è solo un'approssimazione in quanto non è adatto per i gestori di arresto propagazione degli eventi.

+1

Va bene, grazie per chiarire che. In realtà ho passato un po 'di tempo a fissare quella documentazione esatta. Penserei che navigare verso la nuova posizione sia qualificato come "evento associato". Immagino, tecnicamente, non lo è? :/ Accetterò questa risposta, ma l'input di SLaks di seguito è anche molto utile. Lascia che questa sia la risposta ai programmatori una volta per tutte! $ ("# my_hyperlink"). click() non farà navigare il browser! – Sean

7

La chiamata al metodo click di jQuery richiama qualsiasi gestore click che hai aggiunto, ma non farà clic sul collegamento.

è necessario scrivere:

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

(Questo presuppone che non ci sono i gestori di eventi click)


EDIT: In risposta al tuo commento, è possibile chiamare l'IE- solo DOM click metodo, in questo modo:

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

SLaks, grazie per la soluzione. L'unico problema è che ha l'effetto collaterale davvero fastidioso di perdere l'intestazione dell'URL di Referer in IE, che è quello che sto cercando di prevenire. – Sean

-1

io non sono sicuro che risolve il p problema recise, ma qui è un frammento di codice che uso per simulare un clic dell'utente:

var target = "..."; 

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

target.trigger(e); 

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

Per consentire la funzionalità di collegamento ipertestuale (passaggio del mouse, il cursore della mano, etc) quando l'override con jQuery è possibile effettuare le seguenti operazioni:

<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> 
Problemi correlati