我正在调试一个jquery代码,我找到了语法!$,对我来说是非常正常但我从未见过!$,你知道伙伴们的意思吗?或者那是错的还是意味着什么?
jquery文件
<script type="text/javascript">
if(!$(".class").length){
alert();
}
if(google < 4 && !$(".class").hasClass("blue")) {
$("#id").addClass('yellow');
</script>
答案 0 :(得分:2)
这一个:
!$(".class").length
如果没有类名为class
的元素,则其长度为0
,相当于js中的false
,!
表示不操作。
所以,!0
表示true
。
和这一个:
!$(".class").hasClass("blue")
在jQuery hasClass
中返回布尔值true/false
,因此它的输出将相反。
如果元素为蓝色,则!true
表示false
,如果元素不具有类,则!false
表示true
。
答案 1 :(得分:1)
您误解为!$
,但!
正在阅读完整的表达式,而不只是$
。
看起来可能更清楚:
if( !($(".class").length) ) //inner () gets evaluated then inverted by `!`
或者:
var hasClassLength = $(".class").length;
if(!hasClassLength)
这两个示例与if( !$(".class").length )
答案 2 :(得分:0)
!
在许多编程语言中意味着NOT
,并且将简单地修改后面的内容。出于与您遇到的完全相同的原因,通常可以避免这种情况。扫描有时会很麻烦,因为它需要额外的大脑processing
来解析你的脑袋。
但有时它是必不可少的,你会看到它被使用。
因为有些人已经解释过它没有引用$本身,而是$(“。class”)长度解析为什么。
您可以继续输入!
以继续添加NOT。
我发现阅读时我的头脑中有'NOT'替换!有帮助。
所以!$(“。class”)。我头脑中的长度读作:The DOM element with .class does NOT have any length.
一个例子:
true == true
!true == false
!false == true
!!true == true