Professional Documents
Culture Documents
jQuery
Indice
jQuery
Que es jQuery
Caractersticas
11
12
13
$(document).ready()
13
El bloque $(document).ready()
13
13
14
15
15
15
15
15
Pseudo-Selectores
15
Eleccin de Selectores
16
Comprobar selecciones
17
17
18
18
18
Refinamiento de selecciones
18
19
Button
19
Checkbox
19
Checked
19
Disabled
19
Enabled
19
File
19
Image
20
Input
20
Password
20
Radio
20
Reset
20
Selected
20
Submit
20
Text
20
20
21
Encadenamiento
21
21
CSS,estilos y dimensiones
23
23
23
24
24
25
25
Atributos
26
Establecer atributos
26
Obtener Atributos
27
Recorrer el DOM
27
27
28
29
$.fn.html
29
$.fn.attr
30
$.fn.width
30
$.fn.height
30
$.fn.position
30
$.fn.val
30
30
31
31
Clonar elementos
32
Remover elementos
32
33
33
34
34
34
Eventos
35
Introduccin
35
35
36
38
38
.click()
38
.dblclick()
38
.mouseenter()
38
.mouseleave()
38
.mousedown()
39
.mouseup()
39
.mousemove()
39
.mouseover()
40
.toggle()
40
41
.keydown()
41
.keypress()
41
.keyup()
41
42
.focusin()
42
.focusout()
42
.focus()
42
43
43
Mtodo on()
43
Introduccin
43
Ventajas
44
Mtodo off()
45
Ejemplo
45
jQuery
Que es jQuery
jQuery es una biblioteca de JavaScript, creada inicialmente por John
Resig, que permite simplificar la manera de interactuar con los
documentos HTML, manipular el rbol DOM, manejar eventos,
desarrollar animaciones y agregar interaccin con la tcnica AJAX a
pginas web. Fue presentada el 14 de enero de 2006 en el BarCamp
NYC. jQuery es software libre y de cdigo abierto, posee un doble
licenciamiento bajo la Licencia MIT y la Licencia Pblica General de
GNU v2, permitiendo su uso en proyectos libres y privativos.1 jQuery,
al igual que otras bibliotecas, ofrece una serie de funcionalidades
basadas en JavaScript que de otra manera requeriran de mucho ms
cdigo, es decir, con las funciones propias de esta biblioteca se logran
grandes resultados en menos tiempo y espacio. Las empresas Microsoft
y Nokia anunciaron que incluirn la biblioteca en sus plataformas.2
Microsoft la aadir en su IDE Visual Studio3 y la usar junto con los
frameworks ASP.NET AJAX y ASP.NET MVC, mientras que Nokia los
integrar con su plataforma Web Run-Time.
JavaScript
function cambiarFondo(color){
document.body.style.background=color;
}
Onload=cambiarFondo(#ccc);
jQuery
$(body).css(background,#ccc):
Caractersticas
Eventos.
Efectos y animaciones.
Animaciones personalizadas.
AJAX.
Soporta extensiones.
Ventajas
La ventaja principal de jQuery es que es mucho ms fcil que sus
competidores. Usted puede agregar plugins fcilmente, traducindose
esto en un ahorro substancial de tiempo y esfuerzo. De hecho, una de
las principales razones por la cual Resig y su equipo crearon jQuery fue
para ganar tiempo (en el mundo de desarrollo web, tiempo importa
mucho).
La licencia open source de jQuery permite que la librera siempre
cuente con soporte constante y rpido, publicndose actualizaciones de
manera constante. La comunidad jQuery es activa y sumamente
trabajadora.
Otra ventaja de jQuery sobre sus competidores como Flash y puro
CSS es su excelente integracin con AJAX.
En resumen:
Tiene Plugins
Desventajas
Una de las principales desventajas de jQuery es la gran cantidad de
versiones publicadas en el corto tiempo. No importa si usted est
corriendo la ltima versin de jQuery, usted tendr que hostear la
librera usted mismo (y actualizarla constantemente), o descargar la
librera desde Google (atractivo, pero puede traer problemas de
incompatibilidad con el cdigo).
Adems del problema de las versiones, otras desventajas que podemos
mencionar:
Si
jQuery
es
implementado
inapropiadamente como
un
10
JS
Unit
Testing.
Su
pgina
oficial
CSS
Selector
Engine.
Su
pgina
oficial
11
12
13
$(document).ready(readyFn);
14
Seleccin de Elementos
El concepto ms bsico de jQuery es el de seleccionar algunos
elementos y realizar acciones con ellos. La biblioteca soporta gran
parte de los selectores CSS3 y varios ms no estandarizados. En
http://api.jquery.com/category/selectors/ se
puede
encontrar
una
Pseudo-selectores
$('a.external:first'); // selecciona el primer elemento <a>
15
$('div:gt(2)');
primeros
$('div:animated');
animados
Eleccin de Selectores
La eleccin de buenos selectores es un punto importante cuando se
desea mejorar el rendimiento del cdigo. Una pequea especificidad
por ejemplo, incluir el tipo de elemento (como div) cuando se realiza
una seleccin por el nombre de clase puede ayudar bastante. Por eso,
es recomendable darle algunas pistas a jQuery sobre en que lugar del
documento puede encontrar lo que desea seleccionar. Por otro lado,
demasiada
especificidad
puede
ser
perjudicial.
Un
selector
16
$("a[rel$='thinger']");
Estos tipos de selectores pueden resultar tiles pero tambin ser
muy lentos. Cuando sea posible, es recomendable realizar la seleccin
utilizando IDs, nombres de clases y nombres de etiquetas.
Comprobar Selecciones
Una vez realizada la seleccin de los elementos, querr conocer si
dicha seleccin entreg algn resultado. Para ello, pueda que escriba
algo as:
if ($('div.foo')) { ... }
Sin embargo esta forma no funcionar. Cuando se realiza una
seleccin utilizando $(), siempre es devuelto un objeto, y si se lo evala,
ste siempre devolver true. Incluso si la seleccin no contiene ningn
elemento, el cdigo dentro del bloque if se ejecutar.
En lugar de utilizar el cdigo mostrado, lo que se debe hacer es
preguntar por la cantidad de elementos que posee la seleccin que se
ejecut.
Esto
es
posible
realizarlo
utilizando
la
propiedad
17
Guardar Selecciones
Cada vez que se hace una seleccin, una gran cantidad de cdigo es
ejecutado. jQuery no guarda el resultado por s solo, por lo tanto, si va a
realizar una seleccin que luego se har de nuevo, deber salvar la
seleccin en una variable.
Guardar selecciones en una variable
var $divs = $('div');
Nota
En el ejemplo Guardar selecciones en una variable, la variable
comienza con el signo de dlar. Contrariamente a otros lenguajes de
programacin, en JavaScript este signo no posee ningn significado
especial es solamente otro carcter. Sin embargo aqu se utilizar
para indicar que dicha variable posee un objeto jQuery. Esta prctica
una especie de Notacin Hngara es solo una convencin y no es
obligatoria.
Una vez que la seleccin es guardada en la variable, se la puede
utilizar en conjunto con los mtodos de jQuery y el resultado ser igual
que utilizando la seleccin original.
Refinamiento y Filtrado de Selecciones
A veces, puede obtener una seleccin que contiene ms de lo que
necesita; en este caso, es necesario refinar dicha seleccin. jQuery
ofrece varios mtodos para poder obtener exactamente lo que desea.
Refinamiento de selecciones
$('div.foo').has('p');
18
$('h1').not('.bar');
$('ul li').eq(5);
:enabled
Selecciona elementos del formulario que estn habilitados
:file
Selecciona elementos <input> con el atributo type='file'
19
:image
Selecciona elementos <input> con el atributo type='image'
:input
Selecciona elementos <input>, <textarea> y <select>
:password
Selecciona elementos <input> con el atributo type='password'
:radio
Selecciona elementos <input> con el atributo type='radio'
:reset
Selecciona elementos <input> con el atributo type='reset'
:selected
Selecciona elementos <options> que estn seleccionados
:submit
Selecciona elementos <input> con el atributo type='submit'
:text
Selecciona elementos <input> con el atributo type='text'
Utilizando pseudo-selectores en elementos de formularios
20
obtenedores
(en
ingls getters)
establecedores
(en
21
mtodos
establecedores
devuelven
un
objeto
jQuery,
22
23
'color' : 'red'
}); // establece mltiples propiedades CSS
Notar que el estilo del argumento utilizado en la segunda lnea del
ejemplo es un objeto que contiene mltiples propiedades. Esta es
una forma comn de pasar mltiples argumentos a una funcin, y
muchos mtodos establecedores de la biblioteca aceptan objetos para
fijar varias propiedades de una sola vez.
A partir de la versin 1.6 de la biblioteca, utilizando $.fn.css tambin
es posible establecer valores relativos en las propiedades CSS de un
elemento determinado:
Establecer valores CSS relativos
$('h1').css({
'fontSize' : '+=15px',
elemento
'paddingTop' : '+=20px'
24
// establece el ancho de
// obtiene el ancho del
$('h1').height('50px');
todos los elementos H1
$('h1').height();
primer elemento H1
// establece el alto de
$('h1').position();
conteniendo
// devuelve un objeto
25
// informacin sobre la
posicin
// del primer elemento
relativo al
// "offset" (posicin)
de su elemento padre
Atributos
Los atributos de los elementos HTML que conforman una aplicacin
26
Obtener atributos
$('a').attr('href');
Recorrer el DOM
Una vez obtenida la seleccin, es posible encontrar otros elementos
// seleccionar el
// elemento <p>
con respecto a H1
$('div:visible').parent();
el elemento contenedor
// seleccionar
// a un div
visible
27
$('input[name=first_name]').closest('form');
seleccionar el elemento
//
//
// seleccionar
// hijos de
#myList
$('li.selected').siblings();
todos los items
// seleccionar
// hermanos del
elemento <li>
Tambin es posible interactuar con la seleccin utilizando el
mtodo $.fn.each. Dicho mtodo interacta con todos los elementos
obtenidos en la seleccin y ejecuta una funcin por cada uno. La
funcin recibe como argumento el ndice del elemento actual y al
mismo elemento. De forma predeterminada, dentro de la funcin, se
puede hacer referencia al elemento DOM a travs de la declaracin this.
Interactuar en una seleccin
$('#myList li').each(function(idx, el) {
console.log(
'El elemento ' + idx +
'contiene el siguiente HTML: ' +
$(el).html()
);
});
28
29
$.fn.text
Obtiene o establece el contenido en texto del elemento; en caso se
pasarle como argumento cdigo HTML, este es despojado.
$.fn.attr
Obtiene o establece el valor de un determinado atributo.
$.fn.width
$.fn.position
Obtiene un objeto con informacin sobre la posicin del primer
elemento de la seleccin, relativo al primer elemento padre
posicionado. Este mtodo es solo obtenedor.
$.fn.val
Obtiene o establece el valor (value) en elementos de formularios.
Cambiar el HTML de un elemento
$('#myDiv p:first')
.html('Nuevo <strong>primer</strong> prrafo');
30
seleccionados.
Por ejemplo, jQuery provee los mtodos $.fn.insertAfter y $.fn.after.
El mtodo $.fn.insertAfter coloca a el/los elementos seleccionados
despus del elemento que se haya pasado como argumento; mientras
que el mtodo $.fn.after coloca al elemento pasado como argumento
despus del elemento seleccionado. Otros mtodos tambin siguen este
patrn: $.fn.insertBefore y $.fn.before; $.fn.appendTo y $.fn.append;
y$.fn.prependTo y $.fn.prepend.
La utilizacin de uno u otro mtodo depender de los elementos que
tenga seleccionados y el tipo de referencia que se quiera guardar con
respecto al elemento que se est moviendo.
Mover elementos utilizando diferentes enfoques
// Hacer que el primer item de la lista sea el ltimo
var $li = $('#myList li:first').appendTo('#myList');
// otro enfoque para el mismo problema
$('#myList').append($('#myList li:first'));
31
Clonar Elementos
Cuando se utiliza un mtodo como $.fn.appendTo, lo que se est
haciendo es mover al elemento; pero a veces en lugar de eso, se
necesita mover un duplicado del mismo elemento. En este caso, es
posible utilizar el mtodo$.fn.clone.
32
Nota
La sintaxis para aadir nuevos elementos a la pgina es muy fcil de
utilizar, pero es tentador olvidar que hay un costo enorme de
rendimiento al agregar elementos al DOM de forma repetida. Si est
aadiendo muchos elementos al mismo contenedor, en lugar de aadir
33
Manipulacin de Atributos
Las capacidades para la manipulacin de atributos que ofrece la
biblioteca son extensos. La realizacin de cambios bsicos son simples,
sin
embargo
el
manipulaciones
ms
complejas.
Manipular un simple atributo
$('#myDiv a:first').attr('href',
'newDestination.html');
Manipular mltiples atributos
$('#myDiv a:first').attr({
href : 'newDestination.html',
rel : 'super-special'
});
34
Eventos
Introduccin
Recordemos
que
los
eventos
en
javascript
son
aquellas
35
36
va
el
cdigo
asociado
al
evento
});
Hemos visto ejemplos de esto en pginas anteriores con el
mtodo .click(), por lo que creo que no tiene mayor dificultad usarlo
con otros eventos.
37
alert("click simple");
});
.dblclick() : pulsar el ratn dos veces seguidas sobre un elemento:
$("#dblclick").dblclick(function() {
alert("doble click");
});
.mouseenter() : El ratn se sita encima de un elemento:
$("#mouse1").mouseenter(function() {
$(this).css("color","red");
});
.mouseleave() : El ratn, que estaba situado encima de un
elemento, sale de l:
$("#mouse1").mouseleave(function() {
$(this).css("color","blue");
});
38
Momento
en
que
presiona
el
botn,
39
40
41
42
Las funciones para eventos vistas hasta ahora, como click, son atajos
a la funcin on():
43
<div id="content">
<a href="#">enlace1</a>
<a href="#">enlace2</a>
<a href="#">enlace2</a>
</div>
Si queremos asignar el mismo manejador de eventos a todos los
elementos <a>, podemos hacerlo de la siguiente forma:
$("#content").on("click", "a", function() {
// manejar el evento
// $(this) apunta al <a> que ha generado el evento
});
44
de eventos
$("p").on("click mouseenter mouseleave", function(e){
if ($(this).css("color")!="rgb(250, 100, 0)")
$(this).css("color", "rgb(250, 100, 0)");
else
$(this).css("color", "rgb(150, 0, 255)");
})
Mtodo off()
Ejemplo
45
<!DOCTYPE html>
<html>
<head>
<style>
button { margin:5px; }
button#theone { color:red; background:yellow; }
</style>
<script src="http://code.jquery.com/jquerylatest.js"></script>
</head>
<body>
<button id="theone">Does nothing...</button>
<button id="bind">Add Click</button>
<button id="unbind">Remove Click</button>
<div style="display:none;">Click!</div>
<script>
function aClick() {
$("div").show().fadeOut("slow");
}
$("#bind").click(function () {
$("body").on("click", "#theone", aClick)
.find("#theone").text("Can Click!");
});
$("#unbind").click(function () {
$("body").off("click", "#theone", aClick)
.find("#theone").text("Does nothing...");
});
</script>
</body>
</html>
46