2

我有以下JS:

if ( $("#secretContent").children().length == 0) {
    $("#seemore").hide();
}​

这是一个jsFiddle演示我的问题。当 id 为“secretContent”的 div 没有子项/内容时,我打算隐藏 id 为“seemore”的 div。

任何帮助将非常感激。提前致谢!

4

5 回答 5

4

所以...你想用 替换它> 0== 0我想。

于 2012-04-23T16:43:07.523 回答
4

可能想将您“大于”更改为相等:

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/

于 2012-04-23T16:43:10.060 回答
1

如果您也想检查文本内容,我认为您应该使用.contents而不是incase。.children也改成>==. 试着告诉我,

if ( $("#secretContent").contents().length == 0) {
    $("#seemore").hide();
}​
于 2012-04-23T16:44:52.870 回答
1

将“> 0”替换为“== 0”

这应该够了吧!

于 2012-04-23T16:46:11.163 回答
1

这是在做伎俩http://jsfiddle.net/chepe263/9Jmug/1/

if ( $("#secretContent").children().length < 1) {
    $("#seemore").hide();
}​

在小提琴中它显示了内容,因为它在 secretContent 中有一个额外的 div

于 2012-04-23T16:51:11.083 回答