为什么包含选择器只能使用.length?

时间:2014-07-02 20:21:07

标签: jquery

两个案例其他作品其他没有,我想知道为什么?因为这对我来说不透明,所以我真的很想知道。

隐藏myform:

if($("#msg:contains('Registration successful')").length ) {$("#myform").hide();}

不能按预期工作(总是隐藏myform):

if($("#msg:contains('Registration successful')") ) {$("#myform").hide();}

为什么这里需要.length

3 个答案:

答案 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*/}