show
) o bien podemos ocultar (hide
) los selectores del DOM (id
, clases, etiquetas) y podemos hacerlo eligiendo la velocidad en milisegundos.Hemos creado un caso práctico en el siguiente enlace.
Versión 1
HTML
Los ocho botones se han organizado en forma de tabla para que se vean alineados. Al final tenemos uncheckbox
que si esta marcado nos gustaría que los procesos de ocultar y mostrar los elementos se realizara con un cierto retardo. <!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>jQuery show hide</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<h1 id="titulo1" class="norte">Polo Norte</h1>
<p id="parrafo1" class="norte">Párrafo uno.</p>
<h1 id="titulo2" class="sur">Polo Sur</h1>
<p id="parrafo2" class="sur">Párrafo dos.</p>
<hr>
<br>
<table>
<tr>
<td><button id="boton1">Mostrar h1's</button></td>
<td><button id="boton2">Ocultar h1's</button></td>
</tr>
<tr>
<td><button id="boton3">Mostrar class='sur"</button></td>
<td><button id="boton4">Ocultar class='sur"</button></td>
</tr>
<tr>
<td><button id="boton5">Mostrar id="titulo2"</button></td>
<td><button id="boton6">Ocultar id="titulo2"</button></td>
</tr>
<tr>
<td><button id="boton7">Mostrar todo</button></td>
<td><button id="boton8">Ocultar todo</button></td>
</tr>
</table>
<p>
<label><input type="checkbox" id="cbox" value=""> Con retardo</label>
</p>
</body>
</html>
JavaScript + jQuery
Creamos la variablemilisegundos
para indicar un posible retardo..show()
es un método que muestra el elemento indicado.hide()
es un método que oculta el elemento indicadoTambién podemos indicar la velocidad a la que trabajan estos dos métodos.
.hide(2000)
es un método que oculta los elementos indicados en 2000 milisegundos (2 s).hide('slow')
equivale a 600 milisegundos.hide('fast')
equivalea a 200 milisegundos.show(2000)
es un método que muestra los elementos indicados en 2000 milisegundos (2 s).show('slow')
equivale a 600 milisegundos.show('fast')
equivalea a 200 milisegundos
checkbox
esta activado con el método .prop
. Todos las funciones de los botones deben comprobar al ser pulsados si en ese momento el checkbox
está activado o no. Este es el motivo por el que se llama en todas las funciones de los botones a la función retardo()
.'use strict' $(function(){ var milisegundos; function retardo(){ if($('#cbox').prop('checked')){ milisegundos=600; //equivale a 'slow' //milisegundos=200 //equivale a 'fast' }else{ milisegundos=0; }; return milisegundos; }; $("#boton1").click(function(){ retardo(); $('h1').show(milisegundos); //Mostrar h1's }); $("#boton2").click(function(){ retardo(); $('h1').hide(milisegundos); //Ocultar h1's }); $("#boton3").click(function(){ retardo(); $('.sur').show(milisegundos); //Mostrar clase dos }); $("#boton4").click(function(){ retardo(); $('.sur').hide(milisegundos); //Ocultar clase dos }); $("#boton5").click(function(){ retardo(); $('#titulo2').show(milisegundos); //Mostrar id titulo2 }); $("#boton6").click(function(){ retardo(); $('#titulo2').hide(milisegundos); //Ocultar id titulo2 }); $("#boton7").click(function(){ //para dos clases se separan con coma retardo(); $('.norte, .sur').show(milisegundos); //Mostrar todas las clases }); $("#boton8").click(function(){ retardo(); $('.norte, .sur').hide(milisegundos); //Ocultar todas las clases }); });
Versión 2
Vamos a utilizartoggle
para conseguir que con un solo botón ocultemos o mostremos un elemento al pulsarlo de forma alternativa.Conviene ver la siguiente página de w3schools.
En el siguiente enlace se puede ver su funcionamiento.
HTML
Hemos incluido una frase en undiv
que al pulsar sobre ella se ocultará. <!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>jQuery show hide</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<h1 id="titulo1" class="norte">Polo Norte</h1>
<p id="parrafo1" class="norte">Párrafo uno.</p>
<h1 id="titulo2" class="sur">Polo Sur</h1>
<p id="parrafo2" class="sur">Párrafo dos.</p>
<hr>
<div>Esta línea de texto desaparecerá si pulsa sobre ella.</div>
<br>
<button id="boton1">Mostrar y ocultar los h1</button><br>
<button id="boton2">Mostrar y ocultar class=sur</button><br>
<button id="boton3">Mostrar y ocultar id=titulo2</button><br>
<button id="boton4">Mostrar y ocultar todo</button>
</body>
</html>
JavaScript + jQuery
- La frase del
div
la ponemos de color rojo y de otro tamaño para elfont
. - Con la expresión
$(this).hide();
ocultamos eldiv
. - Con
toggle
en los botones podemos ir mostrando y ocultando el contenido de los elementos seleccionados a diferentes velocidades.
$(selector).toggle(speed,callback);
- El parámetro opcional
speed
puede tomar los siguientes valores: "slow
", "fast
" o un número de milisegundos. - El parámetro opcional
callback
es una función que se ejecutará después de quetoggle()
se complete.
'use strict' $(function(){ $('div').css({'color':'red','font-size':'90%'}); $("div").click(function(){ $(this).hide(); }); $("#boton1").click(function(){ $('h1').toggle(); }); $("#boton2").click(function(){ $('.sur').toggle(2000); }); $("#boton3").click(function(){ $('#titulo2').toggle('fast'); }); $("#boton4").click(function(){ $('.norte,.sur').toggle('slow'); }); });
Versión 3
En la siguiente página tenemos un caso curioso donde una serie de rectrángulos van desapareciendo lentamente a medida que vamos pulsando sobre ellos.Nuestra versión se encuentra en el siguiente enlace.
- https://repl.it/@valoro/jQuery-remove
HTML
Sorprendentemente lo único que encontramos en elbody
es un div
. <!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>jQuery remove</title>
<link href="style.css" rel="stylesheet" type="text/css" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<div></div>
</body>
</html>
JavaScript + jQuery
Añadimos conappendTo
siete div
.Con una función los ocultamos retardadamente y con otra función los eliminamos (
remove
). 'use strict'
$(function(){
for ( var i = 0; i < 7; i++ ) {
$( "<div>" ).appendTo( document.body );
}
$( "div" ).click(function() {
$( this ).hide( 2000, function() {
$( this ).remove();
});
});
});
CSS
Definimos rectángulos azules en undiv
. div {
background: rgb(25, 225, 250);
width: 27px;
height: 48px;
margin: 2px;
float: left;
}
No hay comentarios:
Publicar un comentario