2012-01-07 29 views
6

estoy tratando de anexar un archivo CSS usandojQuery Añadir archivo CSS y esperar hasta que se cargue?

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

que funciona muy bien - sin embargo, tengo algunas funciones que corren detrás de la CSS se ha añadido y no puedo encontrar una manera para que éstos espere hasta que este archivo haya terminado de cargarse?

¿Cómo puedo hacer esto?

+0

algún motivo no se puede simplemente incluir en el css el bloque '' del getgo sin usar jquery? –

Respuesta

3

Sólo echa cuando una de las reglas del nuevo CSS se ha aplicado:

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

(Esto es un ejemplo de trabajo)

+0

ah genial :) si, eso debería funcionar gracias! – Andy

+0

Puedo ver cómo podría funcionar, pero es hacky en el mejor de los casos. Tampoco funcionará para mi escenario, ya que no tengo los elementos DOM correspondientes creados en el momento en que se carga el CSS. Los elementos DOM se crean mucho más tarde (posiblemente varios minutos más tarde) cuando el usuario realiza algunas acciones en el front-end. –

+0

Simplemente compruebe la existencia del elemento antes de comprobar las reglas CSS, algo como esto: 'if ($ ('artículo'). Length && $ ('artículo'). Css ('text-align') === 'centro') ... ' –

-1

Lo primero que debe hacer es poner sus funciones dentro del método listo, que ejecutará esas funciones después de que el DOM se haya cargado.

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

A continuación, sólo hay que poner la secuencia de comandos antes de la </body>. De esta forma, el apéndice se activará justo cuando se carga el dom.

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

Otro abordaje es usar el evento de carga:
Comprobar este vínculo con el ejemplo de trabajo, dentro de ella he fijado el cuerpo con un fondo verde, se carga la hoja de estilo stackoverflow que cuando termina de cargar cambia el cuerpo a blanco.
http://jsfiddle.net/CQbqA/1/

+0

Lo tienes mezclado. No es necesario que la función esté envuelta en la función lista para DOM, sino que es el segundo fragmento que colocaste al final del cuerpo. – Purag

Cuestiones relacionadas