2012-01-07 36 views
6

Tôi cố gắng để nối thêm một tập tin css sử dụngjQuery Append CSS File và đợi cho đến khi tải?

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

đó làm việc tuyệt vời - tuy nhiên, tôi có một số chức năng mà chạy SAU css đã được thêm vào và tôi không thể tìm ra một cách để này để đợi cho đến khi tệp này tải xong?

Tôi làm cách nào để thực hiện việc này?

+0

Bất kỳ lý do bạn không thể chỉ bao gồm các css trong khối '' từ getgo mà không sử dụng jquery? –

Trả lời

3

Chỉ cần kiểm tra khi một trong những quy tắc của CSS mới đã được áp dụng:

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

(Đó là một ví dụ làm việc)

+0

ah tuyệt vời :) yeah rằng nên làm việc nhờ! – Andy

+0

Tôi có thể thấy cách đó có thể hoạt động, nhưng nó là tốt nhất. Nó cũng sẽ không hoạt động cho kịch bản của tôi, vì tôi không có các phần tử DOM tương ứng được tạo tại thời điểm CSS được tải. Các phần tử DOM được tạo ra sau này (có thể vài phút sau) khi người dùng thực hiện một số hành động ở giao diện người dùng. –

+0

Chỉ cần kiểm tra sự tồn tại của phần tử trước khi kiểm tra các quy tắc css, như sau: 'if ($ ('article'). Length && $ ('article') .ss ('text-align') === 'center') ... ' –

-1

Điều đầu tiên cần làm là đặt các hàm của bạn bên trong phương thức sẵn sàng, điều đó sẽ thực thi các hàm đó sau khi DOM đã tải.

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

Sau đó, chỉ cần đặt tập lệnh của bạn trước </body>. Bằng cách này, phụ thêm sẽ được kích hoạt giống như tải trọng của bản đồ.

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

aproach khác là sử dụng các sự kiện tải:
Kiểm tra liên kết này với ví dụ làm việc, trong đó tôi đã thiết lập các cơ thể với một nền màu xanh lá cây, nó tải các stylesheet stackoverflow rằng khi kết thúc tải nó thay đổi cơ thể trắng.
http://jsfiddle.net/CQbqA/1/

+0

Bạn đã trộn nó lên. Hàm này không cần phải được bao bọc trong hàm sẵn sàng DOM, thay vào đó là đoạn thứ hai mà bạn đã đăng mà bạn đặt ở cuối phần thân. – Purag

Các vấn đề liên quan