【发布时间】:2012-01-22 13:30:49
【问题描述】:
我正在使用hasClass() 在我的 if 语句中验证元素是否具有给定的类。
如果元素没有给定的类,我如何检查我的 if 语句?提前感谢您的回复。
【问题讨论】:
我正在使用hasClass() 在我的 if 语句中验证元素是否具有给定的类。
如果元素没有给定的类,我如何检查我的 if 语句?提前感谢您的回复。
【问题讨论】:
为什么不简单:
if (!el.hasClass('foo')) {
// code
}
【讨论】:
更一般地,在 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)')
【讨论】:
.not()(请参阅api.jquery.com/not)。示例:$('.book p').addClass('referenceable').not('.aside').addClass('numbered');
if (!element.hasClass('classname')) {
...
}
【讨论】:
你可以使用
el.is('.oneClass:not(.secondClass)')
如果您需要检查多个类或
el.is(':not(.secondClass)')
如果你只需要检查一个类。
【讨论】:
if (!($('class/id/objct').hasClass('class name'))) {
//codes here...
}
【讨论】:
要使用 chaning,您可以使用过滤器。
$(...some selector...).filter(function (){
return !$(this).hasClass('yourclass');
}).each-or-do-more
【讨论】:
.not() 也允许这样做:$(...some selector...).not('.yourclass').each-or-do-more
我会将这个答案添加到池中,以防有人正在寻找与我相同的东西,并首先澄清一下 .hasClass()
根据规格:
.hasClass() - “确定任何个匹配的元素是否被分配给给定的类。”
因此,如果我将 .hasClass() 与匹配多个元素的 jQuery 选择器/元素以及 not 语句一起使用,那么它的行为会有所不同:
!$('selector').hasClass('classname') 基本上会转换为 - “确定是否没有匹配的元素被分配给给定的类”。
在我的例子中,“.hasClass() 的反义词” 被翻译为 - “确定是否有任何匹配的元素没有分配给给定的类"。
不同之处在于我想知道是否所有元素都有类。所以这成为了我的解决方案:
if($('jQuery selector/element').not('.my-class').length)
{
...
}
基本上,如果有元素没有类,那么长度会将条件设置为真。
希望这对某人有所帮助。
【讨论】: