我正在使用hasClass()在if语句中验证元素是否具有给定的类。如果元素没有给定的类,我如何检查我的if语句?提前感谢您的回复。干杯。马克。
答案 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)')
答案 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。
希望这对某人有帮助。