De muchos es ya conocida la utilidad de jQuery para seleccionar nodos, asignar manejadores de eventos y manipular el DOM. Pero la librería de mis sueños incluye algunos métodos que facilitan la escritura de javascript sin tener nada que ver con el manejo de documentos.
Veamos algunos de ellos.
Iterando, que es gerundio
jQuery pone en nuestras manos el método each (ligado al «espacio de nombres» jQuery y también, por supuesto, a $). Sirve para recorrer los elementos de un array y/o las propiedades de un objeto, aplicando una función sobre cada uno de ellos.
var a = [ 1, 2, 3, 4 ];
jQuery.each(a, function(i) {
alert("el cuadrado de " + this + " es " + Math.pow(this, 2));
});
Como se ve, al igual que en el caso de $(".selector").each(f), la función pasada como segundo parámetro se ejecuta como método del elemento de turno, y por tanto, nos referimos a él con el palabro this. Por otra parte, la función recibe como parámetro el índice (o nombre de propiedad) del sospechoso correspondiente:
var o = { name: "Choan", website: "http://dizque.lacalabaza.net/"};
jQuery.each(o, function(i) {
alert(i + " -> " + this);
});
A por otra.
extend, herencia básica
Otro método interesante es extend, que facilita herencia básica. Admite dos objetos como parámetros. Las propiedades del segundo se copian sobre el primero. Útil para, por ejemplo, opciones de configuración:
function deleteHumans(o) {
var settings = { total: 3, job: "consultores", cruelty: 1 };
jQuery.extend(settings, o);
for (var i = 0; i < settings.total; ++i) {
// ...
}
}
deleteHumans({ total: 5, cruelty: 3 });
// se eliminarán 5 consultores con gran crueldad XD
getScript, invita scripts a tu fiesta
Si tienes por ahí algún fichero .js un tanto pesado que no siempre necesitas, puedes cargarlo dinámicamente con jQuery.getScript. Este método recibe como parámetros una URL y una función de callback (opcional).
jQuery.getScript("/js/lipt.js", function() {
alert("¡cargose!");
});
La pega: como utiliza el objeto XMLHttpRequest, está limitado a cargar scripts en el mismo dominio que el documento que los llama.
grep, filtro para indeseables
Recibe un array y una función. La función se ejecuta para cada elemento, recibiendo como parámetros el valor en cuestión y su índice en el array. Si devuelve true, el elemento se queda. En caso contrario, a la puta calle.
jQuery.grep([ 1, 2, 3, 4 ], function(e, i) {
return (e % 2 == 0) ? true : false;
});
// nos quedamos con [ 2, 4 ]
map, la transmutación de los elementos
map aplica la función que más nos guste sobre cada elemento de un array. Dicha función puede devolver:
- el valor transmutado;
- el valor
null, que eliminará el elemento del array de retorno; - un array de valores, que será «aplanado» en el array de retorno.
var units = [ 1, 2, 3, 4];
var squares = jQuery.map(units, function(v) {
return Math.pow(v, 2);
});
// squares == [ 1, 4, 9, 16 ];
merge, valores únicos, por favor
merge recibe dos arrays y devuelve un array que contiene valores únicos. El orden: primero, los elementos del primer array, a continuación, los elementos del segundo no presentes en el primero:
var a = [ 2, 4, 6];
var b = [ 1, 2, 3, 4];
var c = jQuery.merge(a, b);
// c == [ 2, 4, 6, 1, 3 ];
Más y mejor información en la API de jQuery.


5 comentarios RSS
Cojonudo!, sólo alegar que crueldad 3 no me parece suficiente.
Lo mejor de todo es que puedes leer una API, eso en Prototype me traía loco, tener que buscar posts de gente para enterarme de cómo funcionaba tal o cual evento… como que no.
Como siempre, utilísimo.
Un saludo, Choan.
Bueno, puedes llamar a la función con el nivel de crueldad que te parezca apropiado ;)
Ah, y modera ese lenguaje XD
Choan, gracias por tu contribución a facilitarnos la utilización de jquery.
Sólo comentar que hay que decir las cosas por su nombre: Dicha función puede devolver no es la manera! hay que decir Dicha función puede vomitar. XD