Professional Documents
Culture Documents
Primeros pasos
dice: "cuando el documento HTML est listo, hac algo!" (En el siguiente ejercicio
te vamos a mostrar cmo reemplazar algo con una accin).
Fijate que .ready(); termina con un punto y coma. Esto le indica a jQuery que
terminaste de darle una orden.
El enfoque funcional
Deslizamiento electr(n)ico
Ya casi terminamos! Ahora solamente tenemos que incluir una accin en el cuerpo
de nuestra funcin. En este caso vamos a hacer un encabezadodiv deslizable para
que se haga visible en nuestra pgina HTML.
Entre las {} de nuestra function(), vamos a convertir nuestro div en un objeto de
jQuery, para que jQuery pueda manipularlo. De forma muy parecida a como
usamos .ready() en$(document), vamos a usar la accin.slideDown() en nuestro
objeto divde jQuery.
Dentro de los parntesis de.slideDown, vamos a indicarle la rapidez con la que
debe deslizarse. Vamos a escribir 'slow' (es decir, despacio). No te olvides de
poner las comillas.
...y afuera!
<html>
<head>
<title>Magia del botn</title>
<link rel='stylesheet' type='text/css' href='stylesheet.css'/>
<script type='text/javascript' src='script.js'></script>
</head>
<body>
<div><br/><strong>Hac clic ac.</strong></div>
</body>
</html>
ejecuta el cdigo que tiene entre sus parntesis, en cuanto el documento HTML
est listo.
function(){} es la accin que ejecutar .ready() tan pronto como se cargue el
Una de las ventajas de jQuery es que el argumento de una funcin puede ser casi
cualquier cosa, incluso puede ser otra funcin! Por eso .ready() puede incluir
a function entre sus parntesis; toma una funcin como argumento.
(Si te interesa, pods aprender ms acerca de las funciones en los cursos de
JavaScript.
Variables
Las variables nos sirven para guardar informacin que queremos usar ms
adelante. Las variables pueden guardar cualquier tipo de informacin con la que
trabajs, as que pens que son como envases.
El signo = se usa para asignar valores. Por ejemplo, en jQuery pods escribir:
var lucky = 7; var name ="Codecademy"; var $p = $('p');
Nuestra primera variable tiene un nmero 7, mientras que la segunda variable tiene
algo de texto: "Codecademy". Nuestra tercera variable guarda el resultado de un
selector jQuery '$('p')' en la variable'$p'. Como pods ver, esto es solo una manera
fcil de guardar informacin para ms adelante.
Para qu haramos eso? Bueno, hasta ahora no tuvimos que modificar nada ms
de una vez. Si quisiramos modificar la pgina web con nueva informacin,
tendramos que guardar esa informacin en variables. Quizs quers crear una
pgina que se cargue y que desaparezca cuando recibs esa informacin. En ese
caso sera una buena idea usar variables.
$p vs. $('p')
es solamente una convencin para decir: "Mir, esta variable contiene un objeto de
jQuery". Podemos llamar a $p de cualquier
manera: $parrafo, parrafo,vacas_espaciales, de cualquier forma! Simplemente es
una ayuda para las personas que leen nuestro cdigo que vean $p, ya que es una
forma concreta de decir "Mir, ac hay un objeto de jQuery 'p'".
Pero por otra parte, $() s es mgico. Esta es la funcin disfrazada que crea
objetos de jQuery. Si ests creando un objeto de jQuery, tens que usarlo!
Le estamos pasando a .ready() una funcin (que no toma argumentos; por eso es
que sus () estn vacos), y el trabajo de esa funcin es ocultar, con.hide(), el
objeto div de jQuery.
Seleccin mediante ID
</html>
div {
height: 100px;
width: 100px;
display: inline-block;
background-color: #F38630;
border-radius: 5px;
}
#azul {
background-color: #A7DBD8;
}
$(document).ready(function() {
$('button').click(function() {
$('#azul').fadeOut('slow');
});
});
'this' es importante!
La segunda lnea est bien: nos dice que cuando pasamos el cursor sobre un div,
debe ejecutarse una accin determinada. Sin embargo, $('div').hide(); no solamente
ocultar el div sobre el que pass el cursor; tambin ocultar todos los divde la
pgina. Cmo podemos indicarle a jQuery que solamente queremos
afectar este div en particular?
Con this, por supuesto!
La palabra clave this (este) se refiere al objeto de jQuery con el que estamos
trabajando en ese momento. Las reglas de operacin son un poco complejas, pero
lo importante es entender que si uss un controlador de eventos(eventos es el
nombre elegante de las acciones como .click() y.mouseenter(), ya que controlan
eventos de jQuery) en un elemento, pods llamar al evento que ocurre (tal
como fadeOut()) en $(this), y el evento solamente afectar al elemento con el que
hacs algo en ese momento (por ejemplo, sobre el que se hace clic o se pasa el
cursor).
$(document).ready(function() {
$('div').click(function() {
$(this).fadeOut('slow');
});
});
Listo?
body {
margin:0 auto;
padding:0;
width:200px;
text-align:center;
}
a:hover{
-webkit-box-shadow: 0 0 8px #FFD700;
-moz-box-shadow: 0 0 8px #FFD700;
box-shadow: 0 0 8px #FFD700;
cursor:pointer;
}
.panel {
background: #ffffbd;
background-size:90% 90%;
height:300px;
display:none;
font-family:garamond,times-new-roman,serif;
}
.panel p{
text-align:center;
}
.desliza {
margin:0;
padding:0;
border-top:solid 2px #cc0000;
}
.tirar {
display:block;
position:relative;
right:-25px;
width:150px;
height:20px;
font-family:arial,sans-serif;
font-size:14px;
color:#ffffff;
background:#cc0000;
text-decoration:none;
-moz-border-bottom-left-radius:5px;
-moz-border-bottom-right-radius:5px;
border-bottom-left-radius:5px;
border-bottom-right-radius:5px;
}
.tirar p {
text-align:center;
}
Qu bien! Ahora queremos activar un evento cuando se hace clic sobre la pestaa
"Deslizar hacia arriba/abajo" (la clase de esa pestaa es tirar).
Perfecto! Solo un paso ms: necesitamos decirle a .click() qu tiene que hacer. En
este caso, cuando hagamos clic sobre la pestaa, queremos que nuestro panel
deslizable (que tiene la clase .panel) se abra o se cierre.
El evento de jQuery que necesitamos para deslizar nuestro panel es (adivinaste):
.slideToggle()! Le daremos un argumento, que es la velocidad de la animacin de
deslizamiento.
$(document).ready(function() {
$('.tirar').click(function() {
$('.panel').slideToggle('slow');
});
});
Modificar elementos de HTML
Cuando escribimos un texto as entre comillas, lo llamamos string (es decir, una
"cadena de caracteres"). De ahora en adelante, cada vez que digamos "string" o
"cadena" pods pensar en un "texto" o "frase." Las cadenas siempre van en medio
de comillas inglesas o simples.
Insertar elementos
$('.info').append('<p>Algo!</p>');
$('.info').prepend('<p>Algo!</p>');
agregamos un prrafo con el texto "Algo!" dentro de todos los divs con
clase .info. .append() har que el prrafo sea el ltimo hijo de cada
div;.prepend() har que el prrafo sea el primer hijo de cada div. (Nota: mir el
consejo si ests usando comillas simples).
.appendTo() hace lo mismo que.append(), pero invierte el orden de "lo que hay que
Antes y despus
Donde 'objetivo' es el elemento despus del cual agregs algo, y la parte entre
las <etiqueta>s es el elemento de HTML que quers agregar. Pods
agregar <h1>, <div>, o cualquier otro HTML vlido que quieras.
Mover elementos
Mover los elementos por el DOM es muy fcil; todo lo que debemos hacer es usar
las funciones de jQuery que aprendimos, en los elementos existentes, en lugar de
crear unos nuevos.
var $paragraph = $("p"); // existing element
$("div").after($paragraph); // Move it!
// Same as:
$("div").after($("p"));
1.
2.
Eliminar elementos
ejemplo, si uss .empty() en un 'ol', tambin eliminars todos sus 'li' y su texto.
.remove(), no solo elimina el contenido de un elemento, sino que tambin elimina el
elemento en s.
Cambiar tu estilo
le dar a todos los <div> de la pgina una altura de 100 pixeles y un ancho de 50
pixeles.
jQuery tambin incluye una funcin.css() para fines generales que toma dos
entradas: la primera es el elemento de CSS que se va a modificar y la segunda es
el valor que se le dar. Por ejemplo:
$('div').css('background-color','#008800');
le dar a todos los <div> de la pgina un color de fondo verde. Pods modificar
cualquier elemento de atributos CSS de esta manera.
Modificar el contenido
cambiar el contenido del primer div que encuentre por "Me encanta jQuery!"
.val() se usa para obtener el valor de los elementos de formularios. Por ejemplo,
$('input:checkbox:checked').val();
Preparacin
Fijate que creamos un formulario de HTML para obtener los datos de parte del
usuario. Debemos almacenar los datos del usuario en una variable que nos
permitir agregar esos datos al cuerpo del documento HTML ms adelante.
Pods establecer una variable igual al contenido del campo de entrada
usando .val(), as:
//Obtener la variable de una entrada
var input = $('input[name=checkListItem]').val();
1.
2.
3. Agregar un cuerpo
Elimin lo seleccionado
Muy bien! Por ltimo, queremos poder eliminar tems de nuestra lista.
Pods pensar que podramos hacer esto:
$('.item').click(function() {
$(this).remove();
});
En este caso, 'evento' ser 'click','selector' ser '.item', y lo que queremos hacer
es llamar a .remove()en this.
Animation
var myName = "Franky";
var
var
var
var
var
var
drawName(myName, letterColors);
if(10 < 3)
{
bubbleShape = 'square';
}
else
{
bubbleShape = 'square';
}
bounceBubbles();
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="//code.jquery.com/jquery1.10.2.min.js"></script>
<script type="text/javascript"
src="http://s3.amazonaws.com/codecademy-content/courses/hour-ofcode/js/alphabet.js"></script>
</head>
<body>
<canvas id="myCanvas"></canvas>
<script type="text/javascript"
src="http://s3.amazonaws.com/codecademy-content/courses/hour-ofcode/js/bubbles.js"></script>
<script type="text/javascript" src="main.js"></script>
</body>
</html>
Ya sabs un montn sobre eventos de jQuery, pero nunca est de ms repasar los
conceptos bsicos.
El cdigo casi siempre es as:
$(document).ready(function() {
$('elementoParaTocar').evento(function() {
$('elementoAfectado').efecto();
});
});
donde "elemento para tocar" es el elemento HTML sobre el que hars clic, pasars
el puntero, o con el que interactuars de otro modo; y "elemento afectado" es el
elemento HTML que se desvanece, cambia de tamao, o que sufre alguna otra
transformacin.
Algunas veces los dos elementos se refieren a uno solo: pods pasar el cursor
sobre un <div> para cambiar su opacidad. Otras veces interactas con un
elemento aparte; por ejemplo, pods hacer clic en un botn para cambiar el
tamao de un<div>.
<!DOCTYPE html>
<html>
<head>
<title>Resultado</title>
<link rel='stylesheet' type='text/css' href='stylesheet.css'/>
<script type='text/javascript' src='script.js'></script>
</head>
<body>
<form>
MENSAJE: <input type="text" name="mensaje" value="Escrib ac tu
texto!">
</form>
<button>Agregar!</button><br/>
<div id="mensajes"></div>
</body>
</html>
form {
font-size: 12px;
font-family: Verdana, Arial, Sans-Serif;
display: inline-block;
}
#mensajes {
font-size: 14px;
font-family: Garamond, Times, Serif;
}
$(document).ready(function() {
$('button').click(function() {
var Agregar = $("input[name=mensaje]").val();
$('#mensajes').append("<p>"+Agregar+"</p>");
});
});
Vayamos al grano
Vamos a repasar rpidamente como activar un efecto sin un controlador especial
de eventos como .click(); simplemente queremos que nuestro efecto ocurra tan
pronto como nuestrodocument est listo ( .ready() ).
Acordate: la prctica hace al maestro!
Instrucciones
1.
2.
3.
background-image:
}
$(document).ready(function(){
$('div').click(function(){
$('div').hover(function(){
$(this).addClass('rojo');
$('div').fadeOut('fast');
});
});
});
Viste ese efecto que se usa en muchas pginas web que se produce cuando
pass el mouse sobre un objeto y desaparece cuando lo alejs?
$('div').hover(
function(){
$(this).addClass('highlight');
},
function(){
$(this).removeClass('highlight');
}
);
1.
2.
Fijate que nuestro efecto hover puede asumir dos funciones functions()
{}separadas por una coma. La coma es muy importante.
3.
4.
El evento .keydown()
En jQuery, no ests limitado a usar los elementos con el mouse; tambin pods
activar eventos usando el teclado.
El evento .keydown() se activa cuando se presiona un botn en el teclado. Solo
funciona en cualquier elemento de la pgina que tenga foco, as que, para ver su
efecto, tendrs que hacer clic en la ventana que contiene tu div antes de tocar una
tecla.
Combinemos nuestro evento con un nuevo efecto: .animate(). Lo usaremos para
mover un objeto en la pantalla cuando toquemos una tecla.
El efecto .animate() toma dos parmetros: la animacin que se va a realizar, y el
tiempo en el cul se realizar. Ac hay un ejemplo:
$(document).ready(function() {
$('div').animate({left:'+=10px'},500);
});
Esto tomar el primer div que encuentre y lo mover diez pixeles a la derecha.
Acordate de que al aumentar la distancia desde el margen izquierdo se mueve algo
hacia la derecha; la parte de += es solamente una manera de decir "sumale diez
al nmero que est ah." En este caso, le agrega diez pixeles a la distancia actual
desde el margen izquierdo.
Eventos de jQuery
Buen trabajo! Ahora es momento de animar nuestro personaje segn las acciones
del usuario en el teclado.
Cada tecla que se toca en un teclado se traduce en un nmero para que use la
computadora. No te preocupes por memorizarlos, por ahora te dimos lo bsico
en script.js.
1.
2.
Para mover hacia arriba restamos 10px desde la parte superior (nmero
38).
3.
4.
En este caso el fragmento de cdigo que est entre las llaves dice: "Dale jQuery!
Agreg 10 pxeles al margen superior actual", y el segundo parmetro dice:
"Hacelo en 500 milisegundos!" (1.000 milisegundos = un segundo.)
.bounce()
Genial, no? Pero podemos hacer mucho ms que simplemente explotar cosas.
Otro efecto posible es 'bounce'. Lo usamos como un parmetro de.effect() igual
que 'explode', pero agregamos un parmetro adicional para decirle cuntas veces
rebotar. El siguiente cdigo har que nuestro'div' rebote dos veces en 200
milisegundos:
$('div').effect('bounce', {times:2}, 200);
Efectos especiales
El efecto .effect() contiene toda clase de caractersticas mgicas, pero no es lo
ms asombroso que puede hacer jQuery UI. La biblioteca tiene una cantidad de
efectos incorporados que pueden hacer que tu sitio web quede muy bien y con un
aspecto profesional, con muy poco cdigo.
Pods aprender ms si consults ladocumentacin de jQuery UI!
<!DOCTYPE html>
<html>
<head>
<title>Miren!</title>
<link rel='stylesheet' type='text/css'
href='http://code.jquery.com/ui/1.9.1/themes/base/jquery-ui.css'/>
<script type='text/javascript' src='script.js'></script>
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.9.1/jqueryui.min.js"></script>
</head>
<body>
<div id="menu">
<h3>jQuery</h3>
<div>
<p>jQuery es una biblioteca de JavaScript que hace que tus sitios
web queden espectaculares.</p>
</div>
<h3>jQuery UI</h3>
<div>
<p>jQuery UI incluye an ms caractersticas de jQuery!</p>
</div>
<h3>JavaScript</h3>
<div>
<p>JavaScript es un lenguaje de programacin que se usa en
navegadores web, y es el componente principal de jQuery y jQuery UI.
Pods aprender sobre JavaScript con la <a
href="http://www.codecademy.com/tracks/javascript" target="blank"
Auto de carreras
No te encant nuestro auto? Nos llev meses hacerlo! Entonces vamos a volver
a los <div> comunes y corrientes!
(Es en broma: estuvimos sigloshaciendo ese autito!)
Instrucciones
Las listas son geniales, y jQuery UI las hace todava mejores. Si bien seleccionar
es algo grandioso, no necesariamente hace que nuestra lista sea tan dinmica
como quisiramos; qu pasa si queremos reordenar los elementos en nuestra
lista?
Presentamos la funcin .sortable().
Muy bien! Es momento de usar jQuery UI para crear ese asombroso men estilo
desplegable que vimos en la ltima seccin. Para eso usaremos la funcin
incorporada de jQuery UI que se llama .accordion(). (Qu prctico, no?)
Sin embargo, primero vamos a necesitar algunos otros elementos HTML.
Sac tu .accordion()!