Contenido

Añadir selector :regex a jQuery

29 Ene

+ 4

Una de las maravillas de los frameworks es que no se queda en simplemente una colección de funcionalidades que te pueden ayudar sinó que además te permiten extenderlos y darles más capacidades a sus funcionalidades. 

jQuery, al igual que los demás, dispone de esta propiedad y además nos permite extender los selectores con los que podemos realizar consultas sobre nuestra aplicación.  James Padolsey lo sabe y por ello ha extendido el listado de selectores con uno nuevo que puede ayudar a mucha gente.

jQuery.expr[':'].regex = function(elem, index, match) {
    var matchParams = match[3].split(','),
        validLabels = /^(data|css):/,
        attr = {
            method: matchParams[0].match(validLabels) ?
                        matchParams[0].split(':')[0] : 'attr',
            property: matchParams.shift().replace(validLabels,'')
        },
        regexFlags = 'ig',
        regex = new RegExp(matchParams.join('').replace(/^\s+|\s+$/g,''), regexFlags);
    return regex.test(jQuery(elem)[attr.method](attr.property));
}

Este código, nos permite extender el listado de selectores disponibles con :regex, un selector que permite aplicar expresiones regulares a los objetos que estamos buscando.

// Selecciona todo los elementos que no comiencen vocales:
$(':regex(id,^[aeiou])');

// Selecciona todos los DIV's que contengan números
$('div:regex(class,[0-9])');

// Todos los elementos SCRIPT que tenga jQuery en el atributo SRC
$('script:regex(src,jQuery)');
  • LOL, llevo toda la mañana mirando como usar expresiones regulares en los selectores de jquery y vas tu y publicas esto xD

    Ains… si lo hubieras hecho ayer el tiempo que me hubiera ahorrado… :p

  • me parece que el selector es un gran esfuerzo que le da mucha potencia a a Jquery, pero me parece util solo cuando no tenemos acceso a modificar el html.
    las expresiones regulares son terriblemente costosas en procesador, es algo que hay que tener mucho cuidado al usar, por eso en ves de eso, prefiero agregarle una clase al html, para evitarme el uso de ER.

  • excelente, a veces cuando uno programa aplicaciones o cosas con mucho javascript este tipo de herramientas pueden ser muy utiles, claro esta que para hacer aplicaciones web mejor no usar un framework js

    pd: andres nieto … como me comunico contigo??

  • genial idea…

    un detalle, donde dice «Selecciona todos los DIV’s que contengan números» debería decir «Selecciona todos los DIV’s CUYA CLASE contengan números»

Comentar

#

Me reservo el derecho de eliminar y/o modificar los comentarios que contengan lenguaje inapropiado, spam u otras conductas no apropiadas en una comunidad civilizada. Si tu comentario no aparece, puede ser que akismet lo haya capturado, cada día lo reviso y lo coloco en su lugar. Siento las molestias.