Professional Documents
Culture Documents
La librera de jQuery pone a disposicin administradores de eventos bastante similares a los del
JavaScript tradicional. De esta manera, a onmouseover de JavaScript le corresponde mouseover en
jQuery. El prefijo "on"simplemente ha desaparecido.
<!doctype html>
<html lang="es">
<head>
<meta charset="utf-8">
<title>jQuery</title>
<script src="jquery.js"></script>
<script>
$(document).ready(function(){
$("p").click(function () {
$(this).slideUp();
});
});
</script>
<style>
p { cursor: pointer;}
</style>
</head>
<body>
<p>Prrafo</p>
<p>Prrafo</p>
<p>Prrafo</p>
</body>
</html>
Veamos el script jQuery:
$(document).ready(function(){
$("p").click(function () {
Al hacer clic en los prrafos, se ejecuta la siguiente funcin.
$(this).slideUp();
Desaparece el elemento pulsado (this), deslizndose hacia arriba.
});
});
Fin del script.
doctype html>
<html lang="es">
<head>
<meta charset="utf-8">
<title>jQuery</title>
<script src="jquery.js"></script>
<script>
$(document).ready(function(){
$("h1, h2, h3").dblclick(function () {
$(this).toggleClass(borde);
});
});
</script>
<style>
body { font: arial, sans-serif;
font-size: 0.8em; }
.borde { border: 1px solid black;}
h1, h2, h3 { cursor: pointer;}
</style>
</head>
<body>
<h1>Ttulo de nivel 1</h1>
<h2>Ttulo de nivel 2</h2>
<h3>Ttulo de nivel 3</h3>
</body>
</html>
Echemos un vistazo al script:
$(document).ready(function(){
$("h1, h2").dblclick(function () {
Al hacer doble clic en un ttulo de nivel 1 y 2.
$(this).toggleClass(borde);
Se activa o se desactiva (toggleClass()) la clase borde.
});
});
Fin del script.
3. El foco
focus()
Asocia una funcin al evento focus de los elementos especificados.
$("p").focus();
La versin jQuery 1.4 ha aadido los eventos focusin()y focusout().
focusin()
Asocia una funcin cuando un elemento, o cualquiera de sus elementos hijo, obtiene el foco.
$("p").focusin(function() {
$(this).find("span").css(display,inline).fadeOut(1000);
});
focusout()
Asocia una funcin cuando un elemento, o cualquiera de sus elementos hijo, pierde el foco.
Seguramente
algunos
lectores
se
preguntarn
la
eventos focusy focusino blur(vea la siguiente seccin) y focusout.
diferencia
entre
los
Los eventos focusin y focusout propagan el evento a los elementos hijo, mientras
que focusyblurno conocen esta propagacin de eventos. Para ms detalles sobre la propagacin
de eventos, consulte la seccin Entrada y salida del cursor de este captulo.
Ejemplo:
Al obtener el foco de una lnea de texto, aadimos Valor obligatorio.
<!doctype html>
<html lang="es">
<head>
<meta charset="utf-8">
<title>jQuery</title>
<script src="jquery.js"></script>
<script>
$(document).ready(function(){
$("#mail").focus(function () {
$(this).val("Valor obligatorio");
});
});
</script>
</head>
<body>
<p>Mail: <input id="mail" type="text" value=""></p>
</body>
</html>
Algunas explicaciones respecto al script:
$(document).ready(function(){
$("#mail").focus(function () {
Al obtener el foco la lnea de texto mail.
$(this).val("Valor obligatorio");
La aadimos el valor (val("Valor obligatorio")).
});
});
Fin del script.
4. Perder el foco
blur()
Desencadena el evento que se produce cuando el elemento pierde el foco. El efecto es desencadenar
todas las funciones asociadas a este evento para los elementos seleccionados.
$("input").blur();
Ejemplo
Despus de rellenar el campo relativo al nombre y salir de l, el fondo se colorea y se aade "OK".
<!doctype html>
<html lang="es">
<head>
<meta charset="utf-8">
<title>jQuery</title>
<script src="jquery.js"></script>
<script>
$(document).ready(function(){
$("#nombre").focus();
$("#nombre").blur(function () {
$(this).css({"background-color":"#9cf"});
$("p:first").append(" OK");
});
});
</script>
</head>
<body>
<p>Nombre: <input id="nombre" type="text" value=""></p>
<p>Haga clic en la lnea de texto siguiente.</p>
<p>Mail: <input id="mail" type="text" value=""></p>
</body>
</html>
Algunos detalles relativos al script:
$(document).ready(function(){
$("#nombre").focus();
Inicialmente, el script da el foco a la lnea de texto relativa al nombre.
$("#nombre").blur(function () {
$(this).css({"background-color":"#9cf"});
$("p:first").append(" OK");
Al salir del campo, el fondo de la lnea de texto se colorea y se aade "OK".
});
});
Fin del script.
5. La barra de desplazamiento
scroll()
Asocia una funcin al uso de la barra de desplazamiento de un elemento.
$(window).scroll();
Ejemplo
Aparece un texto cuando el usuario usa la barra de desplazamiento.
<!doctype html>
<html lang="es">
<head>
<meta charset="utf-8">
<title>jQuery</title>
<script src="jquery.js"></script>
<script>
$(document).ready(function(){
$("textarea").scroll(function () {
$("span").css({"display": "inline"}).fadeOut("slow");
});
});
</script>
<style>
span { display:none;}
</style>
</head>
<body>
<p>Desplace el texto...</p>
<textarea cols="28" rows="5">Lorem ipsum dolor sit amet,
consectetuer adipiscing elit. Sed non risus. Lectus tortor,
dignissim sit amet, adipiscing nec, ultricies sed, dolor. Cras
elementum ultrices diam. Maecenas ligula massa, varius a, semper
congue, euismod non, mi. Proin porttitor, orci nec nonummy
molestie, enim es eleifend mi, non fermentum diam nisl sit amet
erat. Duis semper.</textarea>
<p><span>Est utilizando la barra de desplazamiento!</span></p>
</body>
</html>
Explicaciones:
$(document).ready(function(){
$("textarea").scroll(function () {
Cuando se usa la barra de desplazamiento de la zona de texto (<textarea>).
$("span").css({"display": "inline"}).fadeOut("slow");
El texto de la etiqueta <span>se muestra con un efecto.
});
});
Fin del script.
<!doctype html>
<html lang="es">
<head>
<meta charset="utf-8">
<title>jQuery</title>
<script src="jquery.js"></script>
<script>
$(document).ready(function() {
$("input").mousedown(function(){
$("#salida").append("mousedown<br>");
});
$("input").mouseup(function(){
$("#salida").append("mouseup<br>");
});
$("input").click(function(){
$("#salida").append("click<br>");
});
});
//]]>
</script>
<style type="text/css">
div { width: 150px;
height: 70px;
overflow: auto;
border: solid 1px black;
padding-left: 10px;}
</style>
</head>
<body>
<p><input type="button" value="Haga clic aqu" /></p>
<div id="salida"></div>
</body>
</html>
Exploremos el script jQuery:
$(document).ready(function() {
$("input").mousedown(function(){
$("#salida").append("mousedown<br>");
});
Al presionar el botn del ratn (mousedown()), la palabra "mousedown" se inserta en la capa
identificada por salida.
$("input").mouseup(function(){
$("#salida").append("mouseup<br>");
});
Al soltar el botn del ratn (mouseup()), la palabra "mouseup" se inserta en la capa.
$("input").click(function(){
$("#salida").append("click<br>");
});
Cuando se detecta el evento click, se aade la palabra "clic".
});
Fin del script.
<!doctype html>
<html lang="es">
<head>
<meta charset="utf-8">
<title>jQuery</title>
<script src="jquery.js"></script>
<script>
$(document).ready(function(){
$("div").mousemove(function(e){
var paginaCoords = "( " + e.pageX + ", " + e.pageY + " )";
$("span:first").text("Posicin del cursor: " + paginaCoords);
});
$("div").mouseout(function(e){
$("span:first").text("");
});
});
</script>
<style>
div { width:240px;
height:100px;
margin-left:10px;
border:1px solid black; }
p { margin-left:10px; }
span { display:block; }
</style>
</head>
<body>
<p>Pasar el ratn por encima de la capa.
<span> </span>
</p>
<div></div>
</body>
</html>
Detallemos el script:
$(document).ready(function(){
$("div").mousemove(function(e){
Al mover el cursor en la capa.
var paginaCoords = "( " + e.pageX + ", " + e.pageY + " )";
La posicin horizontal y vertical del cursor se almacena en la variable paginaCoords.
$("span:first").text("Posicin del cursor: " + paginaCoords);
});
La posicin se mostrar como texto en la primera etiqueta <span>.
$("div").mouseout(function(e){
$("span:first").text("");
});
Cuando el cursor sale de la capa (mouseout()), no se muestra nada (text("")).
});
Fin del script.
<!doctype html>
<html lang="es">
<head>
<meta charset="utf-8">
<title>jQuery</title>
<script src="jquery.js"></script>
<script>
$(document).ready(function(){
var i = 0;
$("div.overout").mouseover(function(){
$("#mostrar").text("mouse over");
$("#contador").text(++i);
})
.mouseout(function(){
$("#mostrar").text("mouse out");
});
});
</script>
<style>
div.out { width: 220px;
height: 125px;
margin-left: 15px;
background-color: #9cf;}
div.in { width: 70%;
height: 55%;
background-color: white;
margin: 15px auto;}
p { line-height:0.9em;
padding:0;}
#mostrar { margin-top: 10px;
margin-left: 15px;
font-size: 1.2em;}
#contador { margin-left: 15px;
font-size: 1.2em;}
</style>
</head>
<body>
<div class="out overout"><p> </p>
<div class="in overout"></div>
</div>
<div id="mostrar"></div>
<div id="contador"></div>
</body>
</html>
Cuando el cursor del ratn pasa por encima (mouseover) de la capa coloreada, el contador
implementado en el script indica la cifra 1.
Por el contrario, cuando el cursor del ratn pasa por encima de la capa blanca (elemento hijo de la
capa coloreada), el contador marca, no 2, sino la cifra 3. El evento de pasar encima del elemento hijo
se propaga al evento de pasar sobre el elemento padre. Por tanto, tenemos 3 eventos.
Ejemplo
Volvemos al mismo cdigo, pero esta vez con mouseentery mouseleave.
<!doctype html>
<html lang="es">
<head>
<meta charset="utf-8">
<title>jQuery</title>
<script src="jquery.js"></script>
<script>
$(document).ready(function(){
var i = 0;
$("div.overout").mouseenter(function(){
$("#mostrar").text("mouse enter");
$("#contador").text(++i);
})
.mouseleave(function(){
$("#mostrar").text("mouse leave");
});
});
</script>
<style>
div.out { width: 220px;
height: 125px;
margin-left: 15px;
background-color: #9cf;}
div.in { width: 70%;
height: 55%;
background-color: white;
margin: 15px auto;}
p { line-height:0.9em;
padding:0;}
#mostrar { margin-top: 10px;
margin-left: 15px;
font-size: 1.2em;}
#contador { margin-left: 15px;
font-size: 1.2em;}
</style>
</head>
<body>
<div class="out overout"><p> </p>
<div class="in overout"></div>
</div>
<div id="mostrar"></div>
<div id="contador"></div>
</body>
</html>
Cuando el cursor del ratn entra (mouseenter) en la capa coloreada, el contador que se implementa
en el script indica la cifra 1.
Y cuando el cursor del ratn entra en la capa blanca (elemento hijo de la capa coloreada), el contador
marca la cifra 2. El evento mouseenterno lo propaga.
Este desbordamiento del evento incluye efectos indeseables cuando hay elementos padres con
elementos hijos y se aplica un mouseovero mouseoutal elemento padre. El movimiento del ratn en
los elementos hijo puede desencadenar un evento mouseout en sus elementos padres. El evento
empieza por el elemento hijo y pasa de padre a padre. La propagacin es ascendente.
Para saber ms, haga una bsqueda en Google con las palabras clave "propagacin de evento",
"desbordamiento de evento" o "event bubling".
Volvemos a nuestros eventos jQuery, por ejemplo mouseentery mouseleave.
Al pasar el ratn por encima de la divisin, se aplica un color de fondo. Cuando el cursor sale, se
restaura la situacin inicial.
Ejemplo
<!doctype html>
<html lang="es">
<head>
<meta charset="utf-8">
<title>jQuery</title>
<script src="jquery.js"></script>
<script>
$(document).ready(function(){
$("div").mouseenter(function(){
$(this).css({"background-color":"#9cf"});
})
.mouseleave(function(){
$(this).css({"background-color":"white"});
});
});
</script>
<style type="text/css">
div { width: 200px;
height: 90px;
margin: 10px;
border: 1px solid black;}
</style>
</head>
<body>
<div></div>
</body>
</html>
Explicaciones del script.
$(document).ready(function(){
$("div").mouseenter(function(){
$(this).css({"background-color":"#9cf"});
})
Al pasar el ratn (mouseenter()) por encima de la capa <div>, se modifica su propiedad CSS de
color de fondo (css({"background-color":"#9cf"})).
.mouseleave(function(){
$(this).css({"background-color":"white"});
});
Cuando el cursor sale de la capa (mouseleave()), el color de fondo se cambia a blanco
(css({"background-color":"white"})).
});
<!doctype html>
<html lang="es">
<head>
<meta charset="utf-8">
<title>jQuery</title>
<script src="jquery.js"></script>
<script>
$(document).ready(function(){
$("form").submit(function() {
if ($("input:first").val() == "login") {
return true;
}
$("span").html("<b>Contrasea no vlida.</b><br>Cmbiela.
").show();
return false;
});
});
</script>
<style>
div,p,span { margin: 5px 0 0 5px;}
span { display: block;}
</style>
</head>
<body>
<p>Introduzca "login" para acceder al sitio Web.</p>
<form action="javascript:window.location.href=http://www.google.es;">
<div>
<input type="password" size="10">
<input type="submit">
</div>
</form>
<span></span>
</body>
</html>
Explicaciones.
$(document).ready(function(){
$("form").submit(function() {
Al enviar el formulario.
if ($("input:first").val() == "login") {
return true;
}
Si la contrasea introducida es correcta, se ejecuta la accin que se define en el cdigo.
$("span").html("<b>Contrasea no vlida.</b><br>Cmbiela.").show();
return false;
Si la contrasea no es correcta, se inserta un mensaje Html de error en la etiqueta <span> y se
muestra.
});
});
Fin del script.
escribe un carcter.
resize(): asocia un evento cuando se modifica el tamao de un elemento, normalmente la
ventana del navegador.
select(): se produce cuando el usuario selecciona un texto (o una parte de l). Algunas
veces se aplica a los campos de formulario de tipo lnea de texto o zona de texto (textarea).
No olvidemos el evento bsico de todo script jQuery, es decir, ready(), que asocia una funcin
cuando el DOM est preparado para ser manejado.