两个案例其他作品其他没有,我想知道为什么?因为这对我来说不透明,所以我真的很想知道。
隐藏myform:
if($("#msg:contains('Registration successful')").length ) {$("#myform").hide();}
不能按预期工作(总是隐藏myform):
if($("#msg:contains('Registration successful')") ) {$("#myform").hide();}
为什么这里需要.length
?
答案 0 :(得分:1)
.length 计算返回了多少个DOM对象(即HTML标记)。
如果没有.length,javascript只会检查是否返回了任何,而jQuery的工作方式是空白结果仍然是一个有效的jQuery对象。 (例如,您可以在该对象上链接命令。)
答案 1 :(得分:0)
因为只有
if($("#msg:contains('Registration successful')").length )
结果为true
。如果条件必须有true
才能执行。否则,简单的object Object
将不会执行该块。
答案 2 :(得分:0)
在第一个示例中,[]
(一个空的jQuery对象)求值为true
并输入if
块的主体。
在第二个示例中,0
评估为false
,但未进入if
块。任何大于0
的值都是true
(即您的选择器匹配某些内容)
例如:
if([]){/*Enters this block*/}
if(0) {/*Does not enter this block*/}
if(99){/*Enters this block*/}