2011-05-12 9 views
6

Si me escondo algunos elementos en Page_Load usando jQuery, los elementos fluctuar durante una fracción de segundo cuando la página y luego desaparecen:Ocultación de un elemento en pageLoad() con jQuery

function pageLoad() { 

     $('#panelOne').hide(); 
     $('#panelTwo').hide(); 

¿Hay una manera de prevenir el parpadeo?

No quiero establecer los elementos css en visibility: hidden, porque luego llamar al método jquery .show() más tarde no parece mostrar el elemento.

+0

Normalmente solo configuro la pantalla: ninguna, pero me gustaría ver una mejor solución si existe. –

+0

Configuración del css para mostrar: ninguno; es la mejor opción. Eso funcionará con .show(); luego. paz ... –

+1

He intentado mostrar: ninguno; en CSS, ¿pero cómo lo haces funcionar sin javascript para alternar la visualización si un usuario ha deshabilitado JS? – robx

Respuesta

6

Configuración visibility: hidden no funciona, pero display: none hace. See jsFiddle.

Puede hacer esto en el evento DOMReady, pero sería más limpio hacerlo en CSS.

+0

ocultar() ing establece la pantalla a none de todos modos, así que esto no debería hacer ninguna diferencia (excepto que hide() evitará algunos errores de portada guardando el valor original de la pantalla) –

+0

Creo que el método hide de jQuery establece 'display : ninguno' para ti. – Alxandr

+0

Bueno, sí. Pero es más limpio y casi seguro más rápido hacerlo en CSS. – lonesomeday

1

En lugar de ocultar el pageload, ocultarlo en domready así:

$(function() { ........ }); 

Vuelva a colocar la ...... con sus 2 líneas de escondite.

Domready se ejecuta cuando se ha construido dom-tree, y mucho antes que pageLoad. Pageload espera que se ejecuten imágenes y cosas. (asumiendo que tienes pageLoad como sigue: <html onload="pageLoad();">).

+1

En realidad todavía veo parpadeo al hacer esto. ¿Es eso lo mismo que document.ready()? –

+0

Sí, $ (función) es una abreviatura de document.ready. Si todavía ve un parpadeo, debe considerar ocultar el elemento en el código (html/css) y luego volver a mostrarlo en js cuando lo desee. – Alxandr

+0

@Sean: ¿tiene una URL de ejemplo? Estoy luchando por entender la causa del parpadeo. –

1

usar Definitivamente documento listo a diferencia de carga de la página:

$(function() { 
    $('#panelOne, #panelTwo') 
     .hide(); 
}); 
2

$.show() no funciona en los elementos fijados a visibility: hidden. Debe usar display: none. Esto funcionará mejor para usted que usar jQuery para ocultar en DOM listo, y le garantizará absolutamente que no verá parpadeo.

Cuestiones relacionadas