Mostrar y ocultar contenido con hide y show

Ofrecer la posibilidad de mostrar y ocultar contenido según la petición del usuario es una técnica que no falla cuando deseas mantener una página Web sencilla, minimalista y, en definitiva, no muy cargada de mucho contenido.

Una de las cosas que más nos interesan a los desarrolladores de páginas Webs es realizar un sitio con contenido dinámico y que sobre todo sea completamente atractivo para el usuario. En la mayoría de los casos, tenemos demasiada información que mostrar. Mostrar todo de golpe puede ser un efecto de estrés para el usuario. Lo ideal es mostrarle lo más importante y si desea ver más ya irá entrando en las secciones o en los bloques ocultos.

La información que no deseamos mostrar de forma directa salvo que el usuario quiera verlo (tales como comentarios, información extra, etc) se pueden ocultar y solo mostrarse cuando el usuario así lo decida. Si es esto lo que estás buscando, en este tutorial te vamos a explicar una forma sencilla de conseguirlo.

En este artículo vamos utilizar las funciones hide() y show() incluidas en la librería jQuery + CSS y Bootstrap 4 para lograr este propósito.

Para mostrar y ocultar un contenedor debemos instanciar un div con un ID único y en el estilo incluir style=”display:none;”, como por ejemplo:

<div id="content" class="col-lg-12">
    <div id="element" class="col-lg-12" style="display: none;"> 
        <div id="close"><a class="btn btn-small" href="#" id="hide" title="Cerrar"><i class="fa fa-close"></i></a></div>
        <h2>What is Lorem Ipsum?</h2>
        <p>Lorem Ipsum...</p>
    </div>
</div>

También será necesario tener un enlace con identificador único para capturar su evento con jQuery con el objetivo de realizar la llamada a show().

<p><a class="btn btn-primary" href="#" id="show"><i class="fa fa-eye"></i> Mostrar</a></p>

En la cabecera de la página o dentro de la etiqueta <head> se debe incluir la librería jQuery + la lógica de mostrar y ocultar el contenido y algunos estilos para mejorar la presencia de los elementos.

<script src="https://code.jquery.com/jquery-3.2.1.js"></script>
<script type="text/javascript">
$(document).ready(function(){
    $("#hide").on('click', function() {
        $("#element").hide();
        return false;
    });
 
    $("#show").on('click', function() {
        $("#element").show();
        return false;
    });
});
</script>

Al hacer clic en el elemento con id=»show» estamos llamando a la función show() de jQuery para mostrar el contenido que hay escondido en el contenedor con id=»element».

Y si hacemos clic en el elemento con id=»hide» estamos mandando a esconder el elemento con id=»element» utilizando la función hide() de jQuery.

El ejemplo está desarrollado utilizando los identificadores de los elementos pero también se puede hacer utilizando el atributo «class» que puede resultar mucho más interesante si hay más de un elemento oculto en la página Web.

Ver demo Descargar

Autor
Escrito por Jose Aguilar - Director ejecutivo y tecnológico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.
Te ha servido? Valora esta entrada!
(28 votos, promedio: 5 de 5)
Comparte en las redes sociales
¿Buscas trabajo de programador?

34 respuestas a “Mostrar y ocultar contenido con hide y show”

  1. Alberto Lima dice:

    Como estas, quería hacerte una pregunta. En mi caso lo que quiero mostrar no es texto sino un pdf que obviamente ya lo tendría subido, como sería el código o como se encajaría a este tipo de archivo?

    • Jose Aguilar dice:

      Hola,

      En este caso tendrás que investigar como visualizar un archivo pdf en una página.

      Lamento decir que nunca he tenido que hacer este trabajo y no puedo guiarte.

      Saludos

  2. Hola andres, esto se podria hacer si mostrar el codigo pero solo si fuera usando php

  3. Andres dice:

    Hola, podria hacerse algo como esto pero, que no sea posible ver el contenido viendo el codigo fuente de la pagina?

  4. OmarIB dice:

    Estimados,
    Tengo una consulta… deseo ocultar los botones Imprimir y Volver al momento de dar clic en Imprimir… Intentando varias formas he podido ocultar el botón imprimir pero no puedo ocultar el botón Volver…
    A la espera de su ayuda…

  5. Dinh dice:

    Como seria posible usar esto pero con classes para hacerlo mas limpio, yo uso la primera opcion que diste en un comentario mas arriba pero al tener muchas opciones se hace el codigo muy largo y creo que esto podria afectar al rendimiento, no se si puedas orientarme sobre que buscar para hacerlo con clases y muchos divs a ocultar y mostrar gracias

  6. gilo dice:

    hola JOse…estoy intentando hacer esto… tengo 2 (ayb) imagenes que serían los botones . al pasar el mouse en «A» quiero que se vea una imagen. al psar el mouse en B» otra imagen. pero esas dos imagenes ocultas estarian ubicadas en el mismo lugar. pero no seria problema porque al sacar el mouse en A o B . se ocultaria la imagen que le corresponde… se entiende?

  7. Clau dice:

    Hola José. Interesante tu post y tu Blog!
    ¿Podría usar este código para mostrar y ocultar un botón de compra cada cierto tiempo durante la reproducción de una video carta de ventas?

    Gracias de antemano.

  8. orlando lopez dice:

    Una pregunta para ocupar este código en un datalist, y mostrar los datos según correspondan a tu elección se ocuparía lo mismo o seria algo mas

  9. Matilde dice:

    Jose, estupendo tu código para mostrar y ocultar contenido.
    Por favor me podrías ayudar indicándome un código para poner varios seguidos. Mil gracias de antemano

    • Jose Aguilar dice:

      Hola buenos dias,

      Si, te puedo indicar al menos 2 formas que se me ocurren de hacerlo.

      1- Utilizar lo mismo que hay en el tutorial duplicando todo y cambiando los identificadores.
      2- Utilizar clases y hacer un código más limpio.

      Saludos

  10. sergio dice:

    Hola,

    Buen aporte y sencillo de implementar.

    Pero me gustaria tener varias textos que se muestra/ocultan en la misma pagina, sin embargo solo funciona en el primero de ellos.

    Tal vez con un array en la funcion para que la variable «#xxx» tenga varios valores y en cada texto a ocultar ir cambiando las id. Pero no tengo ni idea de como hacerlo.

    Un saludo

  11. Jonathan dice:

    muchas gracias todo me funciono perfecto, solo que cuando le doy clikc en mostrar, antes de mostrar el contenido oculto, la pagina se me regresa hasta arriba sin cargar y cuando le doy en ocultar también pasa lo mismo. Hay alguna forma de solucionar esto.

    • Jose Aguilar dice:

      si, falta poner un;

      return false;

      después de:

      $(«#element»).hide();

      y también despues de:

      $(«#element»).show();

  12. sergio dice:

    esta muy bueno , de hecho estoy usando 2 funciones (esta facilisimo para los diseñadores como yo) pero me gustaria saber como podria cerrar una al abrir otra

    otra cosa es que va a #top de la pagina, sabes que se puede hacer??

    saludos!

  13. Héctor Cayupán dice:

    Gracias Maestro..
    Está buenísimo, funciona perfecto !!
    Gracias..

  14. Héctor Cayupán dice:

    Gracias Maestro..
    Está buenísimo, funciona perfecto !!

  15. Agustin dice:

    Hola una duda que tengo quiero que este codigo se haga para mostrar y ocultar mas cosas pero me falla cual es el problema porque quiero poner como 8 o 7 peqeñas descripciones pero no me deja. no se si porque lo llamo mal o porque me falta this.

  16. aceluiis dice:

    hola
    el codigo me funciono muy bien, pero tengo una duda, es posible que el contenido que se oculta (es una imagen) se le de click y se oculte? o es forzoso solo con la palabra cerrar?

    • Jose Aguilar dice:

      Hola,

      Si es posible, el ejemplo porque está hecho así pero tu podrías quitar lo de cerrar y que al pulsar encima de la imagen se cierre. Tendrás que añadirle un class o id a la imagen y programar su click. Algo asi:

      $(«#id_image»).click(function(){
      $(this).hide();
      });

      • cecilia dice:

        hola, en html como puedo hacer que al pulsar click la div desaparezca ??

        • Jose Aguilar dice:

          Sencillo, tendrás tu div con un id=»element» por ejemplo y luego necesita javascript para hacerlo desaparecer al hacer click

          $(«#element»).on(‘click’, function() {
          $(this).hide();
          })

  17. Mario dice:

    file:///C:/Users/madonna/Desktop/ejemlo.html

  18. Mario dice:

    Hola,
    primeramente decirte que el ejemplo que has puesto esta increible, pero lo ejecuto y no me hace absolutamente nada. podrías decirme el por qué?, la verdad es que es raro. muchas gracias.

    • Jose Aguilar dice:

      Indícanos la url de tu ejemplo para que le hechemos un vistazo!

      • Mario dice:

        te refieres a la direccion que te pongo arriba?

        • Mario dice:

          #content {
          width: 450px;
          }

          #close {
          float: right;
          font-weight: bold;
          color: red;
          }

          #element {
          margin: 0px auto;
          min-height: 100px;
          width: 450px;
          box-shadow: 0 2px 5px #666666;
          padding: 10px;
          }

          $(document).ready(function(){
          $(«#hide»).click(function(){
          $(«#element»).hide();
          });
          $(«#show»).click(function(){
          $(«#element»).show();
          });

          $(«#hide2»).click(function(){
          $(«#element2»).hide();
          });
          $(«#show2»).click(function(){
          $(«#element2»).show();
          });
          });

          Mostrar

          cerrar
          Este es un div ocultar

          <!–If you click on the «Hide» button, I will disappear.
          Hide
          Show

          If you click on the «Hide» button, I will disappear.
          Hide |
          Show–>

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Ver más sobre