2010-09-24 15 views
5

Sto provando a selezionare il primo collegamento su una pagina dopo che la pagina è stata caricata completamente e reindirizzare la pagina al collegamento sulla prima pagina.JQuery - Ottieni valore utilizzando un selettore

Capisco come utilizzare un selettore, ma sono perplesso su come posso raccogliere il primo elemento dopo il caricamento della pagina. Sto assumendo una volta che ho il valore potrei usare

window.location = "http://www.google.com/" 

Per poi prendere l'utente alla pagina corretta una volta che ho il valore del collegamento dinamico.

+0

Hai mai ottenere questo risolto con successo? Hai ancora bisogno di aiuto con questo? – jcolebrand

risposta

4
jQuery(document).ready(function() { 
    window.location = jQuery("a[href]:first").attr("href"); 
}); 

Un selettore con la :first pseudo-classe seleziona il primo elemento corrispondente. Per ulteriori informazioni sui selettori, controlla jQuery's excellent documentation.

EDIT

In realtà correva il mio codice e ho notato che stava tornando una stringa vuota. Questo perché stava raccogliendo il primo tag a che è successo a non ha un attributo href. Ho modificato il selettore per selezionare solo i tag a con un attributo href.

+0

Mi chiedo se non sarebbe meglio usare il metodo concatenato '.attr ('href')' in questo caso, solo perché sta imparando jQuery. Mi rendo conto che l'attributo href sarà lì poiché è un collegamento, ma potrebbe anche usare lo stesso concetto su un altro elemento se l'attr è presente. (principalmente un commento @Ryan, non tanto @Vivn Paliath, ma un buon commento per i commenti) – jcolebrand

+0

@drachenstern - Penso che mi hai catturato nel mezzo di una modifica - l'ho cambiato in 'attr (" href ")' per lo stesso identico motivo che hai fornito :) –

+0

~ Haha, bello ... non ti odio quando gli altri ti prendono a metà modifica? ;) ... – jcolebrand

3

Per il selettore, utilizzare a: prima. Questo ti darà il primo tag di ancoraggio nella pagina. È quindi possibile impostare la posizione sull'attributo href del tag di ancoraggio.

Qualcosa di simile:

location = $("a:first").attr("href"); 
1

Si sta utilizzando questa sintassi per caso in un tag di script nella pagina?

$(document).ready(function(){ 
    // Your code here 
}); 
0
$(document).ready(function(){ 
    $('a').each(function(){ 
    if($(this).attr('href').indexOf('http')==0) { 
     window.location = $(this).attr('href'); 
    } 
    }); 
}); 

Questo codice funzionerà perché: Rende che la pagina non ci vuole un tag di ancoraggio statica() e scambiano per un collegamento. Userà quel link solo se inizia con un http: e se no, passerà alla prossima occorrenza del tag.

+0

~ hai perso un '' 'nel tuo codice ... – jcolebrand

+0

hehe .. e ho anche avuto le parentesi sbagliate . Aggiornato! E il tuo addendum qui sotto sulla funzione di pronto documento è perfetto. Non dimenticare che ... – jeffkee

+0

FYI I metodi sopra indicati che selezionano 'a [href]' non funzioneranno perché alcuni link hanno '#' in essi per qualsiasi motivo. – jeffkee

2

Indicherò che i reindirizzamenti sono facilmente sconfitti. Non fare affidamento su questo per nulla "sicuro".

Si può anche scoprire che avete bisogno prima ancora che in realtà ha un href:

$("a[href]:first").attr("href"); 
+1

Non è necessario specificare l'elemento 0-esimo e infatti, ciò potrebbe causare problemi se il set avvolto non contiene elementi? Vorrei riscriverlo come $ ("a [href]: first"). Attr ("href"); – Aaron

Problemi correlati