remove hasclass exist ejemplos jquery performance jquery-selectors

hasclass - jquery get class of element



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

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é 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


¿Qué tal esto?

if (element.hasClass("class1 class2")


Aquí hay una respuesta que sigue la sintaxis de $ (element) .hasAnyOfClasses ("class1", "class2", "class3"):

(function($){ $.fn.hasAnyOfClasses = function(){ for(var i= 0, il=arguments.length; i<il; i++){ if($self.hasClass(arguments[i])) return true; } return false; } })(jQuery);

no es el más rápido, pero es inequívoco y la solución que prefiero. banco: http://jsperf.com/hasclasstest/10


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é pasa:

if($(''.class.class2.class3'').length > 0){ //... }


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


filter() es otra opción

Reduzca el conjunto de elementos coincidentes a aquellos que coinciden con el selector o pase la prueba de la función.

$(selector).filter(''.class1, .class2''); //Filter elements: class1 OR class2 $(selector).filter(''.class1.class2''); // Filter elements: class1 AND class2


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.