2013-06-14 14 views
7

Come faccio jQuery click <a href="test.zip" id="mylink">test</a>

<script> 
    // this wont work 
    $('#mylink').trigger('click'); 
</script> 

prega potete aiutare

+2

che cosa vi aspettate che accada qui –

+0

il download deve iniziare automaticamente - grazie –

+1

cosa vi aspettate che accadrà? Il codice che hai è per sparare su un evento. Non sta simulando l'utente cliccando sul link –

risposta

8
$(document).ready(function(){ 
    $('#mylink').trigger('click'); 
}); 
1

basta cliccare:

$("#mylink").click(); 

Se gli script sono in testa, allora è necessario assicurarsi che il esiste un elemento, quindi lo script dovrebbe essere eseguito quando il documento è pronto.

$(document).ready(function() { 
    $("#mylink").click(); 
}); 
9

Se la vostra intenzione è quella di spostarsi all'URL specificato come se l'utente avesse cliccato il link provare chiamando il metodo invece del metodo jQuery .click() DOM .click():

$('#mylink')[0].click(); 

Il jQuery .click() chiamerà i gestori di eventi che hai associato ma non causano il comportamento di clic predefinito.

+0

Questo mi ha salvato la giornata. Grazie! –

0
document.getElementById('mylink').click(); 

trigger('click') sparerà l'evento click, ma non quello di default.

$('a').click(function(){ alert('triggered') }) // this will be fired by trigger 
2

Se vi aspettate il file per avere scaricato, non accadrà becauer trigger() non attiverà l'evento predefinito.

0

È necessario attendere fino al termine del caricamento del DOM. Questo può essere fatto con jQuery. La funzione anonima viene eseguita al caricamento della pagina una volta che tutti gli elementi sono disponibili nel DOM.

<script> 
    $(function() { 
     $('#mylink').trigger('click'); 
    }); 
</script> 
+0

"al carico _e_ una volta che tutti gli elementi sono disponibili"? – nnnnnn

+0

Sì: al caricamento della pagina viene emesso un evento che informa che il DOM è ora disponibile. jQuery ascolta questo evento e spara qualsiasi ascoltatore legato come nel mio esempio. – leepowell

+0

Il mio punto era che il tuo uso di "e" implica due eventi, una volta sul carico (che accade quando tutto il contenuto ha terminato il caricamento) e una volta pronto (che accade quando tutti gli elementi sono disponibili nel DOM). – nnnnnn

1

utilizzare il seguente modo .... poiché si desidera scaricare il file impedire il collegamento dalla navigazione.

$(document).ready(function() { 
    $('#mylink').click(function(e) { 
     e.preventDefault(); //stop the browser navigating 
     window.location.href = 'test.zip'; 
    }); 
}); 
+0

L'OP sta tentando di forzare un clic in modo progressivo, non rispondere ad un clic da parte dell'utente. – nnnnnn

+0

ok non l'ho capito – Swarne27

0

vostro codice di cui sopra non funziona perché è stato assegnato il valore in href e poi si desidera qualche operazione onclick di questo tag di ancoraggio.

<a href="test.zip" id="mylink">test</a> 

prima di tutto che avete assegnato .zip a href. Quindi aprirà il file zip onclick per primo e non attiverà altre operazioni nel trigger onclick.

così qualunque operazione che si desidera fare, eseguirla prima quindi aprire .zip

utilizzare il codice come qui di seguito

<a href="javascript:void(0);" id="mylink">test</a> 

$('#mylink').click(function(){ 
    // do your operation here 
    // now open zip 
}); 
+0

L'OP sta cercando di utilizzare JavaScript per attivare un clic sull'ancora in modo che il file zip venga aperto/scaricato. Non è richiesta alcuna "altra operazione". – nnnnnn

+0

Penso che l'OP abbia menzionato jquery nel suo codice. – ripa

+0

Qualsiasi utilizzo di jQuery _is_ è un uso di JavaScript. Hai frainteso sia il mio punto sia la domanda. L'OP vuole che il download inizi _ senza che l'utente debba fare clic su nulla. – nnnnnn

4

È necessario attivare il metodo predefinito click, non quella da jQuery. Questo può essere fatto aggiungendo l'opzione di clic predefinita all'interno di un evento click di jQuery usando this.

<a href="http://about.com/"></a> 

Ecco come appare JavaScript. Fondamentalmente crea l'evento quando il DOM è pronto e fa clic intermediatamente, seguendo quindi il collegamento.

$(function() { 
    $('a').click(function() { 
     // 'this' is not a jQuery object, so it will use 
     // the default click() function 
     this.click(); 
    }).click(); 
}); 

Per vedere un esempio dal vivo (apertura about.com), vedi: http://jsfiddle.net/8H9UX/

+0

Il violino è stupido ma la risposta è giusta. +1 –

+1

Ma questo genererà DUE richieste GET, quella predefinita e quella invocata ... –

+0

@AndreaLigios Grazie per aver notato! Aggiornerò il codice – Broxzier

Problemi correlati