2009-06-11 12 views
18

Ho una pagina con un tag di ancoraggio. Nel mio JavaScript sto impostando l'attributo HREF del tag di ancoraggio dinamicamente in base ad alcune condizioni if-else. Ora voglio richiamare l'evento click del tag di ancoraggio a livello di codice. Ho usato il codice seguente, ma non ha avuto successo.JavaScript: richiamo dell'evento click di un tag di ancoraggio da javascript

var proxyImgSrc="CostMetrics.aspx?Model=" + model +"&KeepThis=true&TB_iframe=true&height=410&width=650"; 

document.getElementById("proxyAnchor").href=proxyImgSrc; 
document.getElementById("proxyAnchor").onclick; 

Qualcuno può dirmi come procedere? Ho un'implementazione jQuery light box (thickbox) su questo link.

Si prega di avvisare. Grazie in anticipo.

+0

Posso arrivare a impostare il percorso in cui il file deve essere scaricato? perché usando questo è solo il download nella cartella DOWNLOADS. Voglio salvare nella posizione del file html. –

risposta

63

Se avete installato jQuery allora perché non solo fare questo:

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

Nota che usiamo [0] per specificare il primo elemento. Il selettore jQuery restituisce un'istanza jQuery e chiama click() su quelle sole chiamate click javascript handler, non su href. Chiamata click() sull'elemento reale (restituito da [0]) seguirà il link in una href ecc

Vedi qui per un esempio per illustrare la differenza: http://jsfiddle.net/8hyU9/

Quanto al motivo per il codice originale è non funziona, probabilmente perché si chiama onclick e non onclick(). Senza la parentesi, JavaScript restituirà ciò che è assegnato alla proprietà onclick, non tenta di eseguirlo.

provare la seguente semplice esempio per capire cosa intendo:

var f = function() { return "Hello"; };  
alert(f); 
alert(f()); 

La prima verrà visualizzato il testo effettivo della funzione, mentre il secondo sarà visualizzata la parola "Ciao" come previsto.

+1

Perché il downvote? – samjudson

+1

Grazie Samjudson.IT ha funzionato – Shyju

+2

Per il caso d'uso di "seguire l'href definito nell'ancora" [questa risposta non riesce] (http: // jsfiddle.net/SNdHW/show /) –

1

Credo che si voglia invocare l'evento click. Non "onClick". Inoltre, assicurati di includere la parentesi() quando invochi un metodo. Non confondere i metodi (che terminano con (e)) con attributi e proprietà che non terminano con (e).

// Using jQuery - Which you tagged... 
$("#proxyAnchor").attr("href", proxyImgSrc).click(); 
+0

Sì. Seleziona evento – Shyju

11

Si dovrebbe chiamare cliccare evento come questo:

document.getElementById("proxyAnchor").click(); 
// $('#proxyAnchor').click(); 

ma nel tuo caso è necessario impostare la posizione della finestra a una pagina di reindirizzamento, se si desidera che.

+0

Posso arrivare a impostare il percorso in cui il file deve essere scaricato? perché usando questo è solo il download nella cartella DOWNLOADS. Voglio salvare nella posizione del file html. –

1

Credo che questo è ciò che stai dopo:

var proxyImgSrc="CostMetrics.aspx?Model=" + model +"&KeepThis=true&TB_iframe=true&height=410&width=650"; 
$("#proxyAnchor").attr('href', proxyImgSrc).trigger("click");; 
Problemi correlati