2010-03-02 10 views
9

En Javascript estoy borrando el contenido de un DIV y luego volviéndolo a poblar, ¿hay alguna manera de suspender el diseño de estos elementos o bloquear la interfaz de usuario hasta que haya terminado de cortar en el HTML? No quiero que aparezcan mensajes, simplemente no quiero ver el parpadeo a medida que se eliminan/agregan los elementos.Suspender el diseño durante la interacción de DOM

Respuesta

2

ocultar añadiendo el atributo de estilo de display: none, hacer las cosas, a continuación, volver a mostrar el div después

+0

Esto hace que el div se colapse, voy a verificar la configuración de altura y ver si puedo mantener una altura constante al hacer esto, gracias. – Mantorok

+1

Puedes poner un div externo en su lugar para mantener el tamaño consistente ... solo un pensamiento. –

+0

esto es lo que hice al final, olvidé que el marcador de posición div se estaba ocultando, así que puse un marcador de posición dentro de ese div y todo está bien. – Mantorok

13

Se puede construir el contenido del nuevo elemento en una DocumentFragment antes de insertarlo en el documento actual:

var fragment = document.createDocumentFragment(); 
// build node in fragment 

var div = /* … */; // DIV that should be replaced 
div.parentNode.replaceChild(fragment, div); 
+2

la mayoría de las bibliotecas de gráficos usan el mismo 'truco', llamado doble buffer – xtofl

0

aconsejar solo podría actualizar el contenido div en su conjunto, construyendo todo el contenido html y luego agregarlo al div innerHTML a la vez, como opuesto para agregar elemento al div uno por uno que es más costoso computacional ya que implica reconstruir el árbol dom cada vez (que también puede causar parpadeo)

+0

Hola, lo estoy agregando todo de una vez usando la función html() de JQuery. – Mantorok

0

Encontré que aplicando una altura fija al div lo ordenaba, la altura no se había establecido antes, por lo que estaba creciendo/reduciéndose con el contenido.

Gracias por las respuestas, ¡oh y Do!

Cuestiones relacionadas