hasclass - remove class jquery




jQuery hasClass()-busca más de una clase (8)

¿Qué hay de esto?

$.fn.extend({
     hasClasses: function( selector ) {
        var classNamesRegex = new RegExp("( " + selector.replace(/ +/g,"").replace(/,/g, " | ") + " )"),
            rclass = /[\n\t\r]/g,
            i = 0,
            l = this.length;
        for ( ; i < l; i++ ) {
            if ( this[i].nodeType === 1 && classNamesRegex.test((" " + this[i].className + " ").replace(rclass, " "))) {
                return true;
            }
        }
        return false;
    }
});

Fácil de usar,

if ( $("selector").hasClasses("class1, class2, class3") ) {
  //Yes It does
}

Y parece ser más rápido, http://jsperf.com/hasclasstest/7

Con:

if(element.hasClass("class"))

Puedo verificar una clase, pero ¿hay alguna manera fácil de verificar si "elemento" tiene alguna de muchas clases?

Estoy usando:

if(element.hasClass("class") || element.hasClass("class") ... )

Lo cual no está mal, pero estoy pensando en algo como:

if(element.hasClass("class", "class2")

Lo cual desafortunadamente no funciona.

¿Hay algo como eso?


¿Qué tal esto?

if (element.hasClass("class1 class2")


Esto funcionó para mí

Esto para Hasclass

element.hasClass('class1') || element.hasClass('class2')

Esto es

 element.is('.class1,.class2')

Esto funcionó para mí:

$('.class1[class~="class2"]').append('something');

Qué tal si:

element.is('.class1, .class2')

usar la función predeterminada match () js:

if( element.attr('class') !== undefined && element.attr('class').match(/class1|class2|class3|class4|class5/) ) {
  console.log("match");
}

para usar variables en expresiones regulares, usa esto:

var reg = new RegExp(variable, 'g');
$(this).match(reg);

por cierto, esta es la forma más rápida: http://jsperf.com/hasclass-vs-is-/22


element.is('.class1, .class2') funciona, pero es un 35% más lento que element.hasClass('class1') || element.hasClass('class2') element.hasClass('class1') || element.hasClass('class2')

Si dudas de lo que digo, puedes verificar en jsperf.com .
Espero que esto ayude a alguien.


$.fn.extend({
    hasClasses: function (selectors) {
        var self = this;
        for (var i in selectors) {
            if ($(self).hasClass(selectors[i])) 
                return true;
        }
        return false;
    }
});

$('#element').hasClasses(['class1', 'class2', 'class3']);

Esto debería hacerlo, simple y fácil.





jquery-selectors