2012-01-07 13 views
6

Próbuję dołączyć plik css korzystającjQuery Dołącz plik CSS i poczekaj aż do załadowania?

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

że działa świetnie - jednak mam pewne funkcje, które uruchamiane po css został dodany i nie mogę wymyślić sposób na to, aby zaczekać, aż ten plik się załaduje?

Jak mogę to zrobić?

+0

jakiegoś powodu nie można po prostu zawierać CSS blok '' od getgo bez użycia jquery? –

Odpowiedz

3

Wystarczy sprawdzić, kiedy jedna z zasad nowej CSS został zastosowany:

$('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) 

(To jest przykład roboczych)

+0

ah super :) tak, to powinno dziękować! – Andy

+0

Widzę, jak to może zadziałać, ale w najlepszym razie jest hacky. Nie będzie też działać w moim scenariuszu, ponieważ nie mam odpowiednich elementów DOM utworzonych w czasie ładowania CSS. Elementy DOM są tworzone znacznie później (prawdopodobnie kilka minut później), gdy użytkownik wykona pewne czynności na interfejsie użytkownika. –

+0

Wystarczy sprawdzić istnienie elementu przed sprawdzeniem reguł css, coś takiego: 'if ($ ('article'). Length && $ ('article'). Css ('text-align') === "centrum") ... " –

-1

Pierwszą rzeczą do zrobienia jest umieszczenie funkcji w gotowej metodzie, która wykona te funkcje po załadowaniu DOM.

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

Następnie wystarczy umieścić swój skrypt przed numerem </body>. W ten sposób dodatek będzie uruchamiany w momencie ładowania się domeny.

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

Innym aproach jest użycie zdarzenia Load:
Sprawdź ten link na przykładzie pracy, w nim mam ustawić ciało z zielonym tłem, ładuje stylów stackoverflow, że kiedy zakończy ładowanie zmienia ciało do białego.
http://jsfiddle.net/CQbqA/1/

+0

Masz to pomieszane. Funkcja ta nie musi być zapakowana w funkcję DOM ready, a raczej jest to drugi opublikowany fragment, który umieszczasz na końcu ciała. – Purag

Powiązane problemy