我有以下JS:
if ( $("#secretContent").children().length == 0) {
$("#seemore").hide();
}
这是一个jsFiddle演示我的问题。当 id 为“secretContent”的 div 没有子项/内容时,我打算隐藏 id 为“seemore”的 div。
任何帮助将非常感激。提前致谢!
我有以下JS:
if ( $("#secretContent").children().length == 0) {
$("#seemore").hide();
}
这是一个jsFiddle演示我的问题。当 id 为“secretContent”的 div 没有子项/内容时,我打算隐藏 id 为“seemore”的 div。
任何帮助将非常感激。提前致谢!
所以...你想用 替换它> 0
,== 0
我想。
可能想将您“大于”更改为相等:
if ( $("#secretContent").children().length == 0) {
$("#seemore").hide();
}
正如 Vega 建议的那样,如果您关心文本节点,而不是严格的子 HTML 元素,那么您需要使用contents()
代替children
:
if ( $("#secretContent").contents().length == 0) {
$("#seemore").hide();
}
这是一个显示两者的演示:
http://jsfiddle.net/jtbowden/NASQn/
笔记!应该注意的是,.contents()
计算.div
这:
<div>
</div>
还有这个:
<div> </div>
都认为不是空的,因为第一个有换行符,第二个有空格,它们都被认为是文本节点。使用时唯一被认为是空的.contents()
是:
<div></div>
如果你想解决这个问题,你需要检查 no children()
,然后查看剩余的文本是否只是空格:
if ( $("#secretContent").children().length == 0) {
if( $("#secretContent").text().match(/^\s*$/) ) {
$("#seemore").hide();
}
}
演示:http: //jsfiddle.net/jtbowden/4xtME/
如果您也想检查文本内容,我认为您应该使用.contents
而不是incase。.children
也改成>
了==
. 试着告诉我,
if ( $("#secretContent").contents().length == 0) {
$("#seemore").hide();
}
将“> 0”替换为“== 0”
这应该够了吧!
这是在做伎俩http://jsfiddle.net/chepe263/9Jmug/1/
if ( $("#secretContent").children().length < 1) {
$("#seemore").hide();
}
在小提琴中它显示了内容,因为它在 secretContent 中有一个额外的 div