2011-08-25 8 views
5

Come si può attivare l'azione/evento predefinito di un collegamento HTML (elemento di ancoraggio)? Vale a dire usare JavaScript/jQuery per "fare clic" su un link HTML esistente, come se l'utente avesse cliccato su di esso.Come attivare l'azione/evento predefinito di un collegamento HTML (elemento di ancoraggio)?

L'utilizzo di .click() non sembra funzionare.

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

Per questo HTML:

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

Esempio violino: http://jsfiddle.net/dCfD8/

preferirei non creare una nuova finestra in JavaScript (e prendersi cura di qualsiasi altra cosa deve essere gestita quando un il collegamento è cliccato).

+1

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

+0

@Digital Plane, grazie, non l'ho visto prima. Anche se sarebbe interessante sapere se ci sono dei cambiamenti in merito, o se la risposta "non può essere fatta" si applica ancora anche per i browser più recenti (ad esempio Chrome 13+). – Qtax

risposta

2

È possibile attivare l'evento click utilizzando un semplice metodo di trigger in jQuery.

Attenzione però che anche nel caso l'evento venga licenziato, il browser non seguirà il collegamento href. L'unico modo per seguire l'href è in realtà cliccarlo con il mouse.

Per quanto ne so, non c'è modo di forzare un collegamento a comportarsi come se fosse stato fatto clic. È necessario modificare la posizione del documento o qualcosa del genere per navigare effettivamente tra le pagine.

+0

Accettato per "non c'è modo di forzare un collegamento a comportarsi come se fosse stato fatto clic", che http://stackoverflow.com/questions/1694595/can-i-call-jquery-click-to-follow-an- afferma anche a-link-if-i-havent-bound-an-event-handl. – Qtax

-1

provare questo:

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

Non funziona (almeno per il violino). – Qtax

+1

invoca solo gli eventi jQuery associati al clic, se si desidera "emulare" l'utente che fa clic su un'ancora per reindirizzare a un altro URL, è possibile farlo: 'document.location = $ ('# alink'). Attr ('href '); ' –

+0

Non funzionerebbe con' target = "_ blank" ', o qualsiasi altro attributo link speciale. – Qtax

1

Ampliando il commento di Fabio Cicerchia al suo posto: è possibile utilizzare window.open:

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

+1. Sembra che potrebbe funzionare. Ma sono preoccupato che i manipolatori/bloccanti di popup (predefiniti) potrebbero bloccarlo, mentre potrebbero influenzare un utente normale che fa clic su un collegamento. – Qtax

+0

Sì, la maggior parte dei blocchi popup bloccherà questo, se non viene attivato da un'interazione dell'utente. Puoi combinarlo con 'doument.location = ...' nei casi in cui l'obiettivo non è impostato. Forse dovresti spiegare lo sfondo, perché devi farlo. Forse in quel modo si potrebbero trovare alternative. – 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

Si prega di aggiungere alcune spiegazioni alla risposta, piuttosto che un semplice codice. Il nostro obiettivo qui è educare le persone in modo che capiscano la risposta e possano applicarla in altre situazioni. Se commentate il vostro codice e aggiungete una spiegazione, renderete la vostra risposta più utile non solo alla persona che ha fatto questa domanda, ma a chiunque in futuro potrebbe avere lo stesso problema. – starsplusplus

Problemi correlati