Ir al contenido principal

Desplegar y ocultar el contenido de un div con jQuery.

   Con un código, en jQuery,  tan sencillo como el siguiente:


<!-- desplegar/ocultar contenido menu -->
<script type="text/javascript">
$(document).ready(function () {

$('nav').on('click','li',function () {

var $submenu=$(this).next('div.submenu');

if ($submenu.is(':hidden')) {
$submenu.slideDown('100');
} else {
$submenu.slideUp('100');
}

});

});
</script>

desplegamos y ocultamos el contenido de un div.

   Siguiendo como ejemplo la página Las Edades de la Tierra, en la cual, en su parte izquierda, podéis desplegar y ocultar el contenido de las diferentes Eras, voy a tratar de explicar como poner en práctica este ejemplo. Una parte del código HTML 5 podría ser como lo que sigue:


<section>
<nav>
<article class="menu menuuno">
<hgroup>
<h2 class="titulo">CENOZOICO</h2>
<ul class="menu1">
<li><h2>Cuaternario (hace 2 millones y medio de años)</h2></li>
           <div class="submenu">
AQUI EL CONTENIDO
</div>
<li><h2>Neógeno (hace 23 millones de años)</h2></li>
           <div class="submenu">
AQUI EL CONTENIDO
</div>
<li><h2>Paleógeno (hace 65 millones de años)</h2></li>
          <div class="submenu">
               AQUI EL CONTENIDO
              </div>
    </ul>
</hgroup>
</article>
</nav>
</section>

En este ejemplo el código es en HTML5 aunque puede aplicarse a un HTML normal.

El CSS del div "submenu" (dentro del cual tenemos el contenido que queremos desplegar y ocultar) es:

.submenu {
display:none;
overflow:hidden;
}

Es importante que, en un principio, el contenido esté oculto (display:none).

   Explico un poco el código jQuery. Con la linea $('nav').on('click','li',function () queremos decir que cuando se haga click en cualquier "li" que esté dentro de "nav" se ejecute lo que sigue después. En la variable "$submenu" guardamos el div que está dentro del li sobre el que cliqueamos (en este ejemplo el div llamado submenu). Después comprobamos si está oculto (if ($submenu.is(':hidden'))), si es así lo desplegamos ($submenu.slideDown('100')), en caso contrario lo ocultamos ($submenu.slideUp('100')).

   Así de sencillo.

Comentarios

Entradas populares de este blog

Leer un archivo XML con jQuery y javascript y modificar un HTML con su contenido

   Una manera muy interesante y fácil de modificar los textos de tu página web. Si, por ejemplo, tenemos una página donde cambiamos a menudo unas noticias que tenemos en el margen derecho, podríamos tener un código HTML como este:    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Manejar archivo XML</title> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> <script src="leerxml.js"></script> <link rel="stylesheet" href="estilos.css"> </head> <body> <h1>Titulo de la página</h1> <div id="derecha"> <div class="noticias"> <div class="prim

Recargar div con efecto de aparición suave (Fade In) en jQuery

  En este post continúo con el código que describí en el segundo post sobre cómo refrescar un div sin necesidad de refrescar toda la página, pero añadiéndole unas lineas para este se aparezca de forma suave. La página de ejemplo es http://www.talleresguadamia.com y el código es el que sigue: <script type="text/javascript"> $(document).ready(function(){    $("#contenido a").each(function(){       var href = $(this).attr("href");       $(this).attr({ href: "#"});       $(this).click(function(event){                  $("#contenido").css("display","none");          $("#contenido").load(href).fadeIn(700);        });    }); });; </script>   Podéis ver lo fácil que es. Hemos agregado sólo dos cosas:   - La linea  "$('#contenido').css('display','none')", que lo único que hace es cambiar la propiedad css "display" del div "#contenido&q

Código jQuery para ver una imagen al pasar el ratón sobre un enlace.

   Voy a explicar un código en jQuery , para que, al pasar el puntero del mouse sobre un enlace o, en este caso, sobre un texto cualquiera (sin necesidad de ser un enlace), se nos muestre una imagen cerca del enlace y que esta desaparezca al retirar el puntero del mouse (sin necesidad de hacer click sobre él). Podéis pensar que me estoy repitiendo con un anterior post. Casi que si. Pero la diferencia es que, en este caso, no sabemos donde estará situada la imagen. Es decir que, dependiendo de la situación de la pantalla donde esté el enlace o texto, allí se mostrará la imagen.    Vamos al grano. Primero el código en HTML:       <span class="enlace" title="hyneria.png">Hyneria</span>    Podéis ver que, en este caso, no se trata de un enlace. Le pongo el nombre de 'enlace' a la clase porque en el CSS le doy apariencia de enlace. Aquí lo importante es 'title' el cual contiene el nombre de la imagen que queremos mostrar (pod