Dizque



Desarrollo web, JavaScript, jQuery, Programando

Las perlas ocultas de jQuery

Saltar a Anotaciones relacionadas

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.

  • #2
  • Rafa
  • 2006-10-20 13:42:37

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

  • #4
  • Javier
  • 2006-10-20 16:45:20

Choan, gracias por tu contribución a facilitarnos la utilización de jquery.

  • #5
  • are
  • 2006-10-20 21:04:40

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


Di la tuya

Puedes usar markdown y estas etiquetas HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong> . Por favor, evita el abuso de las mayúsculas y cuida la ortografía.