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

时间:2015-06-11 19:29:19

标签: javascript jquery

我想检查某个元素是否包含此类或其他类,如下所示:

if ( $elem.hasClass("foo") || $elem.hasClass("bar") ) {
  // do something
}

我还想检查一个元素是否有两个类:

if ( $elem.hasClass("foo") && $elem.hasClass("bar") ) {
  // do something else
}

有没有办法在hasClass()函数中完成所有操作?类似的东西:

if ( $elem.hasClass("foo bar") ) {
  // do something when element has both classes
}
else if ( $elem.hasClass("foo","bar") ) {
  // do something when element has either class
}

2 个答案:

答案 0 :(得分:3)

严格回答你的问题:不,你不能。

hasClass()接受一个论点。

正如其他人所指出的那样,你可能会使用is(),但here is a test表明表演会受到很严厉的惩罚。

我建议你继续使用当前的代码。

答案 1 :(得分:1)

你可以做一些不同的事情来实现这一目标。不确定这是否符合您的需求。

  1. 使用多个选择器,您可以看到页面上是否存在匹配的元素
  2. 使用每个执行所需的代码
  3. 这样的例子:

    $("span.foo, span.bar").each( function() {
      $(".test").html("foo or bar was found");
    });
    

    JS小提琴:http://jsfiddle.net/s3gL5pwm/1/

    使用if的第二个解决方案是使用.is()代替。

    例如:

    if ($("span").is(".foo, .bar")) { 
        $(".test").html("foo or bar exists");    
    };
    

    JSfiddle:http://jsfiddle.net/eL2a8smt/