JQuery: problema de desvanecimiento de div
Pregunta
Tengo div, que tiene id "contenido".Es visible.
<div id="wrapper" style="display:block">
<div id="content">
Some text
</div>
</div>
Ahora quiero desvanecerlo:
$('#wrapper').fadeIn( 1500 );
$('#content').click(function(){
$(this).fadeOut( 1500 );
});
Y no pasa nada.Pero cuando escribí:
$('#content').fadeIn( 1500 );
Se oculta y luego vuelve a mostrarse.
aqui esta css
#content
{
height: 100%;
width: 100%;
}
Navegador:Firefox 3.5.3 bajo Linux Gentoo
arriba
Cuando escribo el código:
$('#content').hide();
Se esconde correctamente.
arriba
He solucionado el problema...No puedo entender, ¿por qué fue...?Acabo de reemplazar jquery.min con jquery
Solución
Si entiendo tu pregunta, tienes dos problemas:el contenido no desaparece y, cuando haces clic en él, el contenido no desaparece.
Es probable que ambos problemas se deban a que el script se ejecuta antes de que el contenedor y los divs de contenido aparezcan en el documento.Si tu <script>
la etiqueta está en el <head>
de su documento, entonces $('#wrapper')
no encontrará nada para desvanecerse y $('#content')
No encontrará nada a lo que adjuntar un controlador de clic.
La mejor solución probablemente sea posponer cualquier acción hasta que se cargue el documento, utilizando ready
:
$(document).ready(function () {
$('#wrapper').fadeIn(1500);
$('#content').click(function () {
$(this).fadeOut(1500);
});
});
Alternativamente podrías poner tu <script>
etiqueta después el <div>
etiquetas en el cuerpo.
Cuando solucione este problema, el contenido se desvanecerá, pero no será fluido porque el div contenedor es inicialmente visible; style="display:block"
en el div contenedor.Necesitas hacer eso display: none;
en su lugar, para que el div contenedor esté oculto mientras se carga la página.
Aquí hay un archivo completo que funciona:
<html>
<head>
<style type="text/css">
#wrapper
{
display: none;
}
#content
{
height: 100%;
width: 100%;
}
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js">
window.alert("Couldn't load jQuery");
</script>
<script>
$(document).ready(function () {
$('#wrapper').fadeIn(1500);
$('#content').click(function () {
$(this).fadeOut(1500);
});
});
</script>
</head>
<body>
<div id="wrapper">
<div id="content">
Some text
</div>
</div>
</body>
</html>
Otros consejos
A mí me funciona, Firefox en OSX. Asegúrese de que sus identificadores son únicos, si usted tiene un duplicado podría no funcionar bien. Además, su estilo: el bloque es redundante, divs son bloques de forma predeterminada
.he escrito ( '# de contenido') en el fadeOut y $ ( '# conent') en el fadeIn. Otro que esta los efectos están siendo llamados exactamente de la misma manera y no ofrecen ninguna explicación de por qué no tendrían tanto funciona como es debido.
También están dejando un # en "#wrapper" (línea 1 de jQuery).