2012-01-07 44 views
6

我想追加使用jQuery追加CSS文件並等待加載?

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

這偉大工程CSS文件 - 但是,我有一個運行後的CSS已經增加了一些功能,我不能爲這些想出一個辦法來等到這個文件完成加載?

我該怎麼做?

+0

任何原因,你不能只包括在CSS不使用jquery的getgo代碼塊''? – 2012-01-07 04:00:49

回答

3

只是檢查時的新的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) 

(這是一個工作示例)

+0

啊太棒了:)是的,應該工作,謝謝! – Andy 2012-01-07 05:56:51

+0

我可以看到這是如何工作的,但最好還是哈克。它也不適用於我的場景,因爲我沒有在加載CSS時創建相應的DOM元素。當用戶在前端執行某些操作時,DOM元素會在晚些時候(可能在幾分鐘後)創建。 – 2015-10-05 11:06:10

+0

只是檢查元素的存在,檢查CSS規則,這樣的事情之前:。 '如果($( '文章')長度&& $( '文章')的CSS( '的text-align')=== '中心')...' – 2015-10-06 05:41:13

-1

的第一件事要做的就是把現成的方法,在DOM加載後,將執行這些功能中的功能。

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

然後只要把你的腳本放在</body>之前。這樣,只要dom加載,append就會被觸發。

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

另一種形式給出是使用Load事件:
檢查與工作例子此鏈接,在它裏面,我把屍體用綠色的背景,它加載計算器樣式表時完成加載它改變了身體變白。
http://jsfiddle.net/CQbqA/1/

+0

你混淆了它。該函數不需要包含在DOM就緒函數中,而是您發佈的第二個片段,放置在主體的末尾。 – Purag 2012-01-07 04:12:36