jQuery hasClass() - 检查多个类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jQuery hasClass() - 检查多个类相关的知识,希望对你有一定的参考价值。

附:

if(element.hasClass("class"))

我可以检查一个类,但有一个简单的方法来检查“元素”是否有任何类?

我在用:

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

这不是太糟糕,但我想的是:

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

遗憾的是,这不起作用。

有类似的东西吗?

答案

怎么样:

element.is('.class1, .class2')
另一答案

适合我:

 if ( $("element").hasClass( "class1") || $("element").hasClass("class2") ) {

 //do something here

 }
另一答案

这对我有用:

$('.class1[class~="class2"]').append('something');
另一答案
element.is('.class1, .class2')

有效,但比它慢35%

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

如果你怀疑我说的话,你可以在jsperf.com上验证。

希望这能有所帮助。

另一答案
$.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']);

这应该做到,简单易行。

另一答案

filter()是另一种选择

将匹配元素集减少到与选择器匹配的元素或传递函数的测试。

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

$(selector).filter('.class1.class2'); // Filter elements: class1 AND class2
另一答案

这个怎么样?

if (element.hasClass("class1 class2")
另一答案

这是一个符合语法的答案

$(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);

它不是最快的,但它更明确,我更喜欢的解决方案。替补席:http://jsperf.com/hasclasstest/10

另一答案

那这个呢,

$.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;
    }
});

使用方便,

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

它似乎更快,http://jsperf.com/hasclasstest/7

另一答案

关于什么:

if($('.class.class2.class3').length > 0){
    //...
}
另一答案

使用默认的js match()函数:

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

要在regexp中使用变量,请使用:

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

顺便说一句,这是最快的方式:http://jsperf.com/hasclass-vs-is-stackoverflow/22

以上是关于jQuery hasClass() - 检查多个类的主要内容,如果未能解决你的问题,请参考以下文章

jQuery .hasClass 和动态添加的类

JQuery属性操作 addclass removeclass hasclass toggleClass()

在 vue.js 中使用 hasClass

常用jQuery方法

jQuery + One Page Scroll 插件:检查元素 hasClass 是不是不起作用

如果元素在 Jquery .hasClass() 函数中具有“class1”和/或“class2”