Introducción a JQuery.

27 06 2009

Vuelvo de nuevo con una pequeña guía de JQuery, que se puede denominar como una extensión simple de Javascript que cambia la forma en la que escribimos las cosas, haciendo todo mucho mas sencillo, es decir, como bien dice su eslogan, «write less, do more».

Además, el codigo JS será compatible con la práctica totalidad de los navegadores web del momento, con lo que no tenemos que rompernos la cabeza con incompatibilidades entre los mismos, especialmente al emplear la técnica de desarrollo web AJAX.

En esta introducción veremos que cambios ocasiona el uso de JQuery y cómo realizar las tareas más comunes que veniamos realizando con Javascript, incluyendo llamadas asíncronas (AJAX).

1.- Selección de elementos

Comunmente, en JS utilizábamos sentencias tipo «document.getElementById(‘id_elemento’)» para obtener un elemento concreto y posteriormente realizar tareas sobre el mismo u obtener un valor concreto.

Con JQuery esto es muchisimo mas sencillo:

  • Seleccion por id: $(«#id_elemento»)
  • Seleccion por class: $(«.clase»)
  • Seleccion de todos los elementos de un tipo: $(«p»), $(«img»), $(«input»)
  • Seleccion con filtro por valor de atributo: $(«input[name=’username’]») (selecciona todos los input cuyo atributo name sea igual a «username»).
  • Podemos combinarlos: $(«input.clase[name=’username’]»)

Guia de selectores de JQuery
Todos estos selectores nos devolveran un objeto de tipo Array, por lo tanto podremos recorrelo con un «.each(function() {})» pudiendo hacer referencia a cada objeto usando el selector «$(this)» u obtener un objeto de JS estandar con un «.get(int)».

2.- Atributos , Clases y Estilos CSS

En JS estandar accedemos a los mismos como «element.attribute», sin embargo en JQuery podremos actuar directamente sobre el array devuelto por el selector, aunque solo sobre el primer elemento del mismo.

  • Obtener valor de atributo: $(selector).attr(«attr_name») (devuelve un string).
  • Establecer valor: $(selector).attr(«nombre_atributo», «valor»)
  • Eliminar atributo: $(selector).removeAttr(«nombre_atributo»)
  • Añadir clase (class): $(selector).addClass(«nombre_clase»)
  • Eliminar clase: $(selector).removeClass(«nombre_clase»)
  • Obtener valor (value): $(selector).val()
  • Establecer valor (value): $(selector).val(«valor»)
  • Establecer valor de estilo CSS: $(selector).css(«elemento», «valor») ( pj: .css(«display», «none») )
  • Obtener valor de elemento CSS: $(selector).css(«elemento»)
  • Establecer tamaño CSS: $(selector).width(anchura), $(selector).height(altura)
  • Obtener tamaño CSS: $(selector).width(), $(selector).height()

Guia de manipulación de atributos en JQuery
Guia de CSS en JQuery

3.- Manipulación de contenido

  • Obtener contenido HTML: $(selector).html()
  • Establecer contenido HTML: $(selector).html(«contenido»)
  • Añadir contenido al principio: $(selector).prepend(«contenido»)
  • Añadir contenido al final: $(selector).append(«contenido»)

Guia de manipulación de contenido en JQuery

4.- Eventos

  • Función de click, se llama al hacer click sobre el elemento: $(selector).click( fn ).
  • Función de focus, se llama al hacer focus en un elemento: $(selector).focus( fn ).
  • Función de submit (típica de un formulario, se llama cuando este se envia): $(selector).submit( fn ).

Las funciones indicadas como «fn» se pueden haber definido antes como «var fn = function() { … }» o bien se puede escribir de forma implicita, pj, «$(selector).click(function() { alert(«Me han pulsado :-D»);  })». Al igual que en casos anteriores podemos utilizar «$(this)» para referenciar al objeto pulsado.

Guía de eventos en JQuery

5.- Efectos

Llegamos a una de las partes mas sorprendentes de JQuery, ya que con muy poco código podremos realizar animaciones complejas sin despeinarnos. Veamos algunos de los efectos mas comunes:

  • Esconder/Mostrar un elemento: $(selector).hide(), $(selector).show() Esto esconderá/mostrará un elemento al momento, pero podremos animarlo con un simple .hide(velocidad), donde «velocidad» puede ser un string de entre «slow», «normal» y «fast» o bien un valor numérico en milisegundos que durará dicha animación. Ademas podremos añadir una parámetro más en el que definiremos una función que se llamará cuando finalice la animación, ideal para componer animaciones ( .show(«slow», function(){…})).
  • Efecto slide (cortina): $(selector).slideUp(velocidad) $(selector).slideDown(…).
  • Efecto desvanecimiento: $(selector).fadeIn(velocidad), $(selector).fadeOut(…)
  • Parar animación en curso: $(selector).stop()

Además, podemos crear nuestros propios efectos de animación de forma simple:

  • $(selector).animate(opciones, duracion) donde «opciones» será una serie de parámetros, por ejemplo:
  • $(selector).animate({width: «100px», height: «100px»}, 500): Haremos una animación que dure medio segundo y que vaya cambiando el tamaño actual del elemento a un tamaño de 100×100 pixels.

Guía de efectos en JQuery

Nada mas, espero que haya ayudado a conocer y comprender el funcionamiento de JQuery, al menos para las operaciones más básicas. No he comentado nada de la parte de AJAX, ya que esto lo dejo para otra ocasión, en la que entraré con más detalle en el uso de AJAX con JQuery, utlizando XML como respuesta de las llamadas asíncronas.

🙂

Enlaces relevantes:

JQuery


Acciones

Information

6 responses

27 06 2009
Jorge Suárez de Lis

Solo por el apartado (1) merece la pena. Algunos navegadores (*tos* ie *tos*) no soportan bien el getElementById y compañía y tienes que detectar si existe la función y en caso contrario intentar emularla. Es un cristo. Esto se extiende a todo lo demás vamos, que te olvidas de lidiar con las estupideces de cada navegador (*tos* principalmente *tos* ie *tos*). Me quedaría con esa idea fundamentalmente, que ya señalas también en el artículo vamos.

Cuando dices «u obtener un objeto de JS estandar con un “.get(int)”.» en el apartado (1) me queda la duda de si te refieres a que si, por ejemplo, tengo un campo input con id «pepito» y su valor es un entero, puedo obtener su valor en un entero tal que así: $(‘#pepito’).get(int), pero ¿si no es un entero? Ya te digo, que JQuery lo he usado muy poquillo y hace tiempo, no sé ni siquiera si te refieres a eso. Podía buscarlo en la doc o probarlo, pero te lo comento que es más cómodo y a lo mejor crees conveniente añadir una aclaración.

En (2) me llaman la atención los métodos width() y height(), entiendo que son una forma rápida de llamar a css(«width») o compañía, ¿o hay algo más?

Hay una duda que siempre he tenido con el javascript, y ya que estoy preguntón la suelto aquí a ver si alguien sabe. Imaginemos que tengo:

$(‘#shit’).submit( function(){
alert(‘warnin!’);
});

Si quiero añadirle algo más a posteriori, se me ocurre algo como:

this.submit2=this.submit;
$(‘#shit’).submit( function(){
aler(‘jorl!’);
this.submit2();
});

Pero no sé si habrá algo mejor. Si he cometido errores de sintaxis o algo y me lo quieres comentar, wai! Esque las veces que lo usé quería ir añadiendo cosas al document.ready() desde varios sitios y no encontré un método mejor…

27 06 2009
BerfengeR

En cuanto a lo de «u obtener un objeto de JS estandar con un “.get(int)”.», lo que devuelve es un objeto JS estandar, por lo tanto para obtener el valor (value) deberias hacer: $(’#pepito’).get(0).value, el «0» haría referencia al primer elemento del array que devuelve «$(’#pepito’)», que aunque solo sea 1, devuelve un array con un solo elemento. Claro que es mucho mas sencillo hacer simplemente «$(’#pepito’).val()» y acabas antes.

Según mi experiencia los metodos height y width cambian los CSS a pelo, no vi ninguna diferencia mas, lo cual no quiere decir que no la haya.

En cuanto a la pregunta del submit, no la entiendo xD

Y por ultimo para el document.ready puedes hacer:
$(document).ready(function() {…..});

28 06 2009
zetxek

Programar Javascript a pelo, sin un framework multinavegador por debajo, me parece estúpido. Se pierde tiempo en arreglar bugs de los navegadores y en optimizar cosas que otros ya han optimizado… y dentro de los frameworks que he probado, mi favorito es jQuery, por comunidad, rendimiento, personalización, transparencia, actividad…

Resumo: jQuery mola xD (ahora es cuando podéis flipar: hasta que lo introduje en la empresa nadie lo usaba y la mayoría no lo conocía… el año pasado…)

31 12 2009
Hermes

Excelente !! ideal para una introducción rápida al jquery.
Muchas Gracias por compartirla. saludos desde Venezuela

27 06 2013
tiffany and co

If you are going for best contents like me, only pay a visit this web site every day because it offers feature
contents, thanks

13 10 2018
door

In fact no matter if someone doesn’t understand after that its up
to other viewers that they will help, so here it
occurs.

Deja un comentario