2012-01-07 12 views
6

Sto cercando di aggiungere un file CSS utilizzandojQuery Accoda file CSS e aspetta fino a carico?

$('head').append('<link rel="stylesheet" href="style2.css" type="text/css" />');

che funziona grande - tuttavia, ho alcune funzioni che vengono eseguite dopo l'aggiunta del css e non riesco a trovare un modo per questi di attendi fino al termine del caricamento di questo file?

Come posso fare questo?

+0

Qual è il motivo non si può semplicemente inserire il CSS in il blocco '' di getgo senza usare jquery? –

risposta

3

Proprio controllare quando è stata applicata una delle regole del nuovo CSS:

$('head').append('<link rel="stylesheet" href="http://cdn.sstatic.net/stackoverflow/all.css?v=d4a5c7ca0d4c" type="text/css" />'); 

var fakeListener = setInterval(function(){ 
    if($("body").css("text-align")=== "center"){ 
     clearInterval(fakeListener) 
     // What you want to do after it loads 
    } 
},50) 

(Questo è un esempio di lavoro)

+0

ah fantastico :) sì, dovrebbe funzionare grazie! – Andy

+0

Posso vedere come potrebbe funzionare, ma nel migliore dei casi è hacky. Inoltre non funzionerà per il mio scenario, poiché non ho gli elementi DOM corrispondenti creati al momento del caricamento del CSS. Gli elementi DOM vengono creati molto più tardi (probabilmente diversi minuti dopo) quando l'utente esegue alcune azioni sul front-end. –

+0

È sufficiente verificare l'esistenza dell'elemento prima di controllare le regole css, ad esempio: 'if ($ ('article'). Length && $ ('article'). Css ('text-align') === 'center') ... ' –

-1

La prima cosa da fare è mettere le funzioni all'interno del metodo ready, che eseguirà quelle funzioni dopo che il DOM è stato caricato.

<script type="text/javascript"> 
    jQuery(document).ready(function() { 
    // Your functions come here 
}); 
</script> 

Quindi basta inserire lo script davanti allo </body>. In questo modo l'append verrà attivata proprio quando la dom si carica.

<script type="text/javascript"> 
$('head').append(); 
</script> 

Un'altra aproach è quello di utilizzare l'evento di carico:
controllare questo link con l'esempio di lavoro, all'interno di esso ho impostato il corpo con uno sfondo verde, carica il foglio di stile StackOverflow che, quando termina il caricamento cambia il corpo al bianco.
http://jsfiddle.net/CQbqA/1/

+0

Hai confuso. La funzione non ha bisogno di essere racchiusa nella funzione DOM ready, piuttosto è il secondo frammento che hai postato che hai posto alla fine del corpo. – Purag