Aunque la librería más conocida y utilizada hasta hace poco era Prototype, ha surgido una nueva librería llamada jQuery, que incluye muchas de las ideas de Prototype y a las que añade muchas otras nuevas ideas para crear una librería espectacular: muy pequeña, rápida, ligera y con cientos de utilidades.
Las aplicaciones web cada vez son más complejas, ya que incorporan nuevos efectosvisuales e interacciones dinámicas (Ajax, auto-completar, drag&drop, elementos que aparecen/desaparecen, animaciones, etc.).
Al mismo tiempo, el desarrollo de las aplicaciones web avanzadas es cada vez más complicado, ya que deben funcionar correctamente en al menos 5 navegadores diferentes (Internet Explorer 6 y 7, Firefox, Opera y Safari) y el tiempo de desarrollo se reduce por la necesidad continua de incluir novedades en la aplicación.
Por todo ello, es imprescindible utilizar librerías JavaScript que simplifiquen el desarrollo y permitan crear aplicaciones compatibles con todos los navegadores.
¿Qué es jQuery?
Según sus creadores, jQuery es una “librería JavaScript muy rápida y muy ligera que simplifica el desarrollo de la parte de cliente de las aplicaciones web”. En otras palabras, jQuery incluye muchas utilidades para crear fácilmente las páginas web de las aplicaciones dinámicas complejas.
Conceptos básicos
Para utilizar jQuery, solamente es necesario descargar la librería y enlazar en nuestras páginas el único archivo JavaScript que la forma:
<script type="text/javascript" src="jquery.js"></script>
La librería se puede descargar en dos versiones: la versión descomprimida ocupa 61 KB y es la mejor opción para desarrollar aplicaciones. La versión comprimida ocupa sólo 20 KB y es la opción ideal en el servidor de producción, para minimizar el tiempo de carga de la aplicación.
Una de las instrucciones más utilizadas en las aplicaciones JavaScript es la siguiente:
window.onload = function() { ... }
La instrucción anterior permite ejecutar el código JavaScript una vez que la página se ha cargado por completo. Se trata de una instrucción imprescindible en las aplicaciones web complejas, porque cualquier modificación en la página o la selección de cualquier elemento necesita que el árbol DOM de la página se haya construido por completo, y por tanto, que esté disponible el código HTML de la página entera. jQuery dispone de una instrucción muy similar equivalente a la anterior:
$(document).ready( function() { ... } );
La gran ventaja de la función de jQuery, es que la página se puede manipular en cuanto se ha cargado su código HTML (y por tanto, se ha construido el árbol DOM de la página) mientras que la función de JavaScript espera a que se carguen todos los elementos de la página, incluyendo todas las imágenes. De esta forma, las aplicaciones realizadas con jQuery pueden responder de forma mucho más rápida que las aplicaciones JavaScript tradicionales.
Por otra parte, la función getElementById()
es posiblemente la más utilizada al desarrollar aplicaciones web, ya que permite seleccionar un elemento a partir de su atributo “id”. Además, existen otras dos funciones relacionadas: getElementsByTagName()
y getElementsByName()
. jQuery incluye la función $()
como una alternativa más rápida y completa para seleccionar cualquier elemento de la página:
Con JavaScript
// Seleccionar un elemento document.getElementById("miParrafo"); // Seleccionar todos los enlaces document.getElementsByTagName("a"); // Seleccionar todo lo anterior ? // Seleccionar mediante la clase CSS ?
Con jQuery
// Seleccionar un elemento $("#miParrafo"); // Seleccionar todos los enlaces $("a"); // Seleccionar todo lo anterior $("#miParrafo, a") // Seleccionar mediante la clase CSS $(".miClase")
Selectores avanzados
Uno de los componentes más impresionantes de jQuery es el de sus selectores, que permiten olvidarse de los aburridos document.getElementById()
y del código JavaScript complejo. jQuery utiliza lo mejor de CSS 1, CSS 2, CSS 3
y XPath para seleccionar de forma sencilla cualquier elemento de la página sin necesidad de saturar el código XHTML con atributos “id”. Ejemplos:
// Seleccionar todos los párrafos de la página que tengan al menos un enlace $("p[a]") // Seleccionar todos los "div" que no estén ocultos $("div:visible") // Seleccionar todos los radio buttons que han sido seleccionados $("input[@type=radio][@checked]") // Seleccionar varios elementos mediante sus "id" y "class" (devuelve un array) $("p.importante, div#menu, span#introduccion p.especial a")
Además, jQuery soporta muchos de los selectores que define CSS 3, algo que los navegadores actuales sólo pueden soñar con tener algún día, como :nth-child(n)
, :empty
, :not, :disabled
. Para los programadores más acostumbrados a trabajar con XML, jQuery también permite utilizar XPath para seleccionar elementos, como por ejemplo:
// Seleccionar todos los párrafos de la página $("/html/body//p"); // Seleccionar todos los enlaces cuyo atributo "rel" valga "nofollow" $("//a[@ref='nofollow']");
jQuery es tan avanzado que incluso añade sus propios selectores que no existen ni en CSS ni en XPath, pero que facilitan mucho el desarrollo de las aplicaciones:
// Selecciona todos los elementos pares de una lista (":odd" selecciona los impares) $("ul#menu li:even") // Selecciona los 4 primeros párrafos de la página $("p:lt(4) ") // Selecciona todos los enlaces que contengan el texto "pincha aquí" $("a:contains('pincha aquí')")
Eventos
Además del evento ready()
visto anteriormente, jQuery dispone de varias funciones relacionadas con la gestión de los eventos. El método bind()
, por ejemplo, permite asociar un número ilimitado de eventos a un mismo elemento:
// Al pinchar sobre un párrafo de la página, se muestra un alert() con su contenido $("p").bind("click", function() { alert( $(this).text() ); });
El modelo de eventos de jQuery es muy completo, ya que cada evento dispone de dos posibilidades: si no se pasa ninguna función, se ejecuta el evento del elemento; si se pasa una función, se asocia esta función al evento del elemento:
// Ejecuta el evento "onclick" en todos los párrafos de la página $("p").click(); // Asocia una función al evento "onclick" de todos los párrafos de la página $("p").click(function() { alert( $(this).text() ); });
jQuery dispone de tantas funciones como eventos estándar de JavaScript. El nombre de cada función es el mismo que el del evento, sin el habitual prefijo “on”: focus()
, blur()
, keyup()
, mouseover()
, mouseup()
, resize()
, submit()
, etc.
Además, jQuery añade un evento que no existe en JavaScript y que es realmente útil para muchas aplicaciones: toggle()
. A este método se le pasan dos funciones, cuya ejecución se alterna en función de las veces que se pincha sobre el elemento.
La primera vez que se pincha sobre el elemento (y todas las veces impares), se ejecuta la primera función y la segunda vez que se pincha el elemento (y todas las veces pares) se ejecuta la segunda función:
$("p").toggle(function(){ alert("Me acabas de activar"); },function(){ alert("Me acabas de desactivar"); });
Interacciones Ajax
Ahora que la mayoría de aplicaciones web deben incorporar interacciones creadas con Ajax, jQuery permite incluirlas sin ningún tipo de dificultad. Los siguientes ejemplos muestran lo sencillo que es realizar algunas interacciones comunes en Ajax:
// Cargar el contenido de una página HTML en un elemento $("div#noticias").load("noticias.html"); // Descargar un script desde el servidor y ejecutarlo $.getScript("/ruta/hasta/miScript.js"); // Petición GET al servidor con parámetros y función de respuesta // La petición POST es idéntica, salvo que se cambia $.get por $.post $.get("/ruta/hasta/el/scriptDelServidor.php", { idProducto: "AX00342", cantidad: "3" }, function(data){ alert("Se ha añadido al carrito: " + data); } );
Además, jQuery incluye muchas otras funciones para construir peticiones Ajax complejas y para notificar al usuario el inicio/ejecución/finalización de las peticiones Ajax.
Efectos visuales
Todas las aplicaciones web modernas incorporan pequeños efectos visuales y animaciones que, si se utilizan de forma adecuada, mejoran la interacción con la aplicación y su usabilidad. jQuery incluye de serie los efectos visuales más utilizados por los diseñadores, pudiendo controlar mediante sus opciones la duración de cada efecto:
$("p").hide(); // Ocultar un elemento $("p").show(); // Mostrar un elemento $("p").toggle(); // Si estaba oculto, mostrarlo; si era visible, ocultarlo $("p").show("slow"); // Mostrar el elemento con una animación muy suave $("p").slideToggle("fast"); // Desplegar/ocultar el elemento con una animación muy rápida $("p").fadeOut(); // El elemento desaparece con un fundido muy suave
Otras utilidades
jQuery incluye muchas otras funciones para facilitar el desarrollo de las aplicaciones web, entre otras:
// Obtiene el valor de la propiedad "color" de CSS del primer párrafo de la página $("p").css("color"); // Establece el valor de la propiedad "color" de CSS $("p").css("color","red"); // Establece varias propiedades CSS de un elemento $("p").css({ color: "red", background: "blue", font-weight: "bold" }); // Oculta todos los elementos de un formulario $(miFormulario.elements).hide(); // Devuelve "true" si el navegador es alguna versión de Internet Explorer $.browser.msie // Devuelve "true" si el navegador es alguna versión de Safari $.browser.safari // Obtiene o establece el valor del "innerHTML" del elemento $("#contenidos").html(); $("#contenidos").html("<h1>Contenidos</h1><p>Cargando...</p>"); // Añade la clase CSS a todos los elementos o la quita si ya la tenían establecida $("p").toggleClass("seleccionado");
Este artículo sólo muestra una mínima parte de las posibilidades de la excelente librería jQuery. Gracias a jQuery, puedes hacer mucho más y mucho mejor pero escribiendo menos código JavaScript, además de tener la garantía absoluta de que tus aplicaciones funcionan igual de bien en cualquier navegador.
Lecturas de referencia
La mayoría de la información y ejemplos de este artículo han sido extraídos de la excelente documentación en inglés de jQuery. Una buena forma de estudiar la API completa de jQuery es acceder a la guía visual.
[…] JavaScript fácil y rápido con jQuerywww.maestrosdelweb.com/editorial/javascript-facil-y-rapido-c… por hefesto hace pocos segundos […]
Muy buen artículo. Me ha acercado a las posibilidades de esta librería Javascript con un lenguaje claro y buenos ejemplos. Gracias.
Hace un tiempo que uso JQuery con Drupal y realmente me atrap´o, a pesar de que estaba acostumbrado a Prototype. Estan muy buenos los ejemplos de este articulo. Felicitaciones.
Muy buena la introducción al mundo de JQuery (John Resig es mi ídolo), solamente quiero apuntar algo.
La utilización de $.get o $.post no nos dá la posibilidad de rutas de escape en caso de que no se efectué el llamado. Es mucho mejor utilizar $.ajax. Más información http://docs.jquery.com/Ajax.
JQuery, XD fue como conoci a JavaScript, es de lo mejor, solo que no hay que olvidar que siempre hay que aprender js.
Rene Silva, tienes toda la razón. Lo malo es que las limitaciones de espacio del artículo no dejaron explicar mejor algunas cosas.
Tampoco se pudo profundizar en el tema del “chainability” y no se mencionan los plugins.
Elegante!!!, ya lo baje y modifique algunas paginas que tenia y si que es mas comodo y facil de programarlas.
😉
Saludos
Gildus
Muy bien explicado y muy buenos ejemplo, modificaré algunas de las páginas de prototype a jquery.
Seguimos aprendiendo.
=S Jquery, si muy bonitos los plugins, pero no es una framework modular, se requiere descargar todo de una sola ves, yo prefiero Mootools
hola a todos
bueno necesito de sus ayudas
tengo que desarrollar una pagina en la que me piden lo siguiente:
-un formulario de comentarios
-un espacio de chat, es decir, los usuarios que entren a la pagina pueden chatear en ella
-un espacio para colgar videos y bueno tambien en diseñarlo
-un controlador de usuarios (contador)
-espacio para el dia y la hora en la misma pagina
espero que me respondan rapido por que lo necesito.
gracias de antemano
cualquier informacion comunicarse al correo
hola a todos
bueno necesito de sus ayudas
tengo que desarrollar una pagina en la que me piden lo siguiente:
-un formulario de comentarios
-un espacio de chat, es decir, los usuarios que entren a la pagina pueden chatear en ella
-un espacio para colgar videos y bueno tambien en diseñarlo
-un controlador de usuarios (contador)
-espacio para el dia y la hora en la misma pagina
espero que me respondan rapido por que lo necesito.
gracias de antemano
cualquier onformacion comunicarse al correo [email protected]
“=S Jquery, si muy bonitos los plugins, pero no es una framework modular, se requiere descargar todo de una sola ves, yo prefiero Mootools”
En primer lugar, jQuery no es una framework; es una libreria JavaScript. Por eso se descarga toda de una vez (es decir, 20KB te parece mucho?).
Yo en lo personal acabo de utilizar esta libreria para un proyecto interno y me a gustado mucho el uso de la funcion $, para obtener la referencia de un objeto.
Muchas gracias por éste útil artículo!!!!
muy claro, muchas gracias 😀
… ufff, más librerias js, habrá que echarle un ojo a esta porque parece que promete.
hola ccono te llamas
espero que conosca a mucha gente
Muy claro el articulo , voy a testear esta libreria en mi web
Me gusto mucho el articulo, ya uq eestaba buscando mas info en español, grax 😀
Jquery me parece enrredado para diseñadores senior en javascript. Tiene problemas con paso de variables, por ejemplo
La explicacion y ejemplos que se muestran en este apartado me parecen bastante buenos ojala y puedas mandar mas ejemplos y explicarlos ya que la forma en que lo haces es muy facil de entender..
descargar
Muy bueno el articulo, pero, no me manejo muy bien en los eventos, como para poder definirlos dinamicamente con una base de datos.
Alguien conoce una solucion para el siguiente codigo, pero, definiendolo dinamicamente con base de datos.
JQuery Collapse
$(function()
{
$(“#mostrar”).click(
function(event) {
event.preventDefault();
$(“#caja”).slideToggle();
}
);
$(“#caja a”).click(
function(event) {
event.preventDefault();
$(“#caja”).slideUp();
});
});
body {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
color: #666666;
}
.close{color:#993300; text-decoration:none;}
.caja {
width:40%;
display: none;
padding:5px;
border:2px solid #FADDA9;
background-color:#FDF4E1;
}
.mostrar{
display:block;
width:40%;
padding:5px;
border:2px solid #D0E8F4;
background-color:#ECF8FD;
text-decoration:none;
}
MOSTRAR
[x]
Lorem ipsum dolor sit amet, consetetur sadipscing elitr,
Saludos
[…] Vía: MaestrosdelWeb […]
voy a probar la libreria
Es interesante, pero parece que fuera otro lenguaje.
[…] Este es uno de los primeros artículos donde hablaré de diseño y desarrollo web, así que espero que sea de su agrado y utilidad, está basado un aun artículo de Maestros del Web, llamado: Javascript fácil y rápido con jQuery. […]
sdfsdfsdfsd
dccdscsc
uygjggj
vjvjvjvj
hola
una mierda
La librería funciona muy bien, me parece que es una alternativa, ya que estoy acostumbrado al javascript de siempre.
Muchas gracias
jQuery: Sencilla, potente y tremendamente Genial!
Que buen artículo. Estoy buscando librerías de JS por primera vez para incorporar a un proyecto y ahorrar tiempo al no crear todo propio y este artículo es bastante interesante como para decidirse por jQuery.
Estuve viendo YUI que me convence porque lo usa vBulletin pero jQuery también es usado por WordPress. Después de leer el artículo parece que jQuery es más claro y rápido para programar.
Me gustaria que me ayudaran mas con javascript para los alertas y para trabajar mas con funciones
Agradeceria a l@s Muchach@s que si van a escribir algo, que sea util porque habemos muchas personas que buscamos respuestas y sus opiniones son de interes a muchas personas.
Gracias a maestros del web que se empeñan en este tipo de tecnologias, es muy util y estamos muy contento de colaborar con ustedes, Gracias.
[…] http://www.maestrosdelweb.com/editorial/javascript-facil-y-rapido-con-jquery/ […]
Excelente articulo. mchas gracias.
[…] | maestros del web También te puede […]
Respondiendo a la amiga Alejandra
el unico error que pude detecar es que desde el jquery vos invocas a un #elemento pero en la declaracion de style css vos a ese elemtno lo pones como una class ese es el unico eeror que puedo ver si cambias . x # en la llamada al elemneto funcionara
Excelente libreria no puede faltar en ningun projecto de diseño web profesional.
Slds.
Hola muy util esta libreria pero tengo un problema usando la ñ o los acentos, me salen caracteres, lo soluciones usando entidades numericas del html pero al hacerlo todo esto se va siendo pesado la web, hay alguna solución.
Muy buen articulo! Hasta ahora nunca usé ajax y javascipt muy poco.. Estoy dando mis primeros pasos y estos articulos son muy bunos para quitar el miedo! Gracias..
[…] sitios con diseños tremendos y las últimas técnicas de desarrollo en css, javascript, JQuery y muchas otras cosas. Sección INSPIRACIÓN | Enviar […]
Hola a todos:
Tengo una pega con un accordion de jquery y nadie sabe como solucionarlo.
Haber si entre todos me podeis echar una mano, os comento:
lo dicho, tengo un menu con accordion y tal menu tiene pestañas y al pinchar se abre la pestaña; hasta aqui todo perfecto. Pues necesito en la misma web otro menu, igual que el accordion, pero que no se abra al pinchar en la pestaña, vamos, que solo se ve las pestañas. El inconveniente es que yo le pongo un link a estas pestañas y no se por que, no funciona el link.
He escrito en mil sitios y nadie sabe como resolverlo, aquí os dejo la url de la prueba: http://www.nemodigital.com/producto/series/index2.html
Un saludo y gracias.
[…] http://www.maestrosdelweb.com/editorial/javascript-facil-y-rapido-con-jquery/ […]
actualmente tengo un codigo en javascript para cambiar las imagenes de los programas que estan en el aire en la radio, pero necesito que los mismos cambien segun la hora del web server y no del pc de cada persona que visita la web. No soy entendido de los lenguajes pero alguien podria ayudarme con esto? gracias Diego
Hola!
Gracias por tus explicaciones. Estoy intentando usar en JQuery en mi Web, concrétamente “accordion” y “tabs”.
Saludos
[…] obtener una mayor información, puedes seguir los siguientes enlaces: Maestros del Web Wikipedia […]
Excelente, la base para comenzar a aprender sobre jQuery
ya estan en mis marcadores 😀
Saludos.
Testing comments 😉
“Esta muy bueno, tengo la libreria, pero estoy tratando de probar si funciona por ejemplo:
$(“#Termino”).click(function() {
alert( $(this).text() );
});
pero no me tira nada, comento que “#Termino” es un input de tipo text donde su id es “Termino”, hago click en la caja de texto pero no me tira el alert(), no se que falta.
1)Tengo que poner el onClick=”function()” tambien dentro del input o no hace falta?.
2)Tengo que poner el codigo jquery dentro de $(document).ready(function(){…} para que funcione?.
Nota:Comento por las dudas, que ya tengo agregado en mi pagina “
Esta muy bueno, tengo la libreria, pero estoy tratando de probar si funciona por ejemplo:
$(“#Termino”).click(function() {
alert( $(this).text() );
});
pero no me tira nada, comento que “#Termino” es un input de tipo text donde su id es “Termino”, hago click en la caja de texto pero no me tira el alert(), no se que falta.
1)Tengo que poner el onClick=”function()” tambien dentro del input o no hace falta?.
2)Tengo que poner el codigo jquery dentro de $(document).ready(function(){…} para que funcione?.
Excelente, muy bueno el artículo.
[…] framework jQuery celebra su cumpleaños con el lanzamiento de su versión jQuery 1.4 y además invitan a los amantes […]
[…] info aqui Categorías:Frameworks Comentarios (0) Trackbacks (0) Dejar un comentario […]
[…] están trabajando en el Unladen Swallow que ayudará a reconstruir el compilador de Python. Jquery es otra de las tecnologías que Google apoya incondicionalmente y que le ha dado una fuerza […]
esta informacion esta calientita hay que aprovecharlo ,gracias
Muchas gracias por la info.
Me fue muy util!!!
Muy claro y útil, gracias por el tutorial
Si hay alguien dispuesto a escribir un libro sobre jquery, podéis poneros en contacto con nosotros en:
[email protected]
Gracias
Muchas gracias por la aportación de este tutorial. A ver si alguien conoce un tutorial completo en español.
Un saludo.
Hola necesito hacer un formulario cuyos campos debo validarlos en linea es decir sin hacer submit…. como puedo hacerlo con jquery?
Excelente informacion, sencilla, completa y facil de digerir!!!! grax!!!