Jquery对面的.hasClass()?

时间:2012-01-22 13:30:50

标签: jquery class

我正在使用hasClass()在if语句中验证元素是否具有给定的类。如果元素没有给定的类,我如何检查我的if语句?提前感谢您的回复。干杯。马克。

7 个答案:

答案 0 :(得分:64)

为什么不简单:

if (!el.hasClass ('foo'))
{

}

答案 1 :(得分:21)

更常见的是,在javascript中,要检查布尔结果的反面,请使用逻辑NOT运算符!

var isValid = false;
if (!isValid) {
    // execute if isValid = false;
}

对于您的问题,.hasClass()如果元素具有指定的类,则返回布尔值,因此如果您有表达式:

<div class="someClass"></div>

if ($('div').hasClass('someClass')) {
    // will execute
}

检查它是否没有该类:

if (!$('div').hasClass('someClass')) {
    // will not get here because our element has the class "someClass"
}

选择元素时,如果要避免拥有某个类的人,可以使用:not()伪选择器:

$('div:not(.someClass)')

About the :not() selector

答案 2 :(得分:6)

if (!element.hasClass('classname')) {
    ...
}

答案 3 :(得分:2)

您可以使用

el.is('.oneClass:not(.secondClass)')

如果您需要检查多个班级或

el.is(':not(.secondClass)')

如果你只需要检查一个班级。

答案 4 :(得分:0)

要使用更改,您可以使用过滤器。

$(...some selector...).filter(function (){ 
    return !$(this).hasClass('yourclass');
}).each-or-do-more

答案 5 :(得分:0)

if (!($('class/id/objct').hasClass('class name'))) {
       //codes here...
 }

答案 6 :(得分:0)

如果有人正在寻找与我相同的东西,我会将这个答案添加到池中,并首先对.hasClass()进行一些澄清

根据规格:

.hasClass()-“确定是否为匹配的元素任何分配了给定的类。”

因此,如果我将.hasClass()与匹配多个元素以及一个not语句的jQuery选择器/元素一起使用,则其行为会有所不同:

!$('selector').hasClass('classname')基本上将翻译为-“确定是否没有个匹配元素被分配了给定类”。

在我的案例中,“。hasClass()的反义词” 转换为-“确定是否为给定的类分配了任何匹配的元素“。

区别在于,我想知道所有元素是否都具有该类。所以这成了我的解决方案:

if($('jQuery selector/element').not('.my-class').length) 
{
    ...
}

基本上,如果某些元素没有该类,则length将条件设置为true。

希望这对某人有帮助。