javascript - 检查div是否为空

时间:2012-07-09 09:48:15

标签: javascript jquery html css

我有以下设置:

      <div id="whatever">
           <!-- Here some dynamic divs will be loaded -->
      </div>

我需要知道什么时候“whatdiv”里面什么都没有。问题是,当我什么都不说时,我的意思是如果用户什么也看不见。所以如果在div里面就像

那样
      <div style="display: none">LOOOONG TEXT</div>
加载

我认为它是空的。

如果满空格也是空的等等......如果用户没有看到任何内容,则为空。

由于要覆盖的案例太多(内容高度为0,内容为display none,空格,制表符,隐藏输入等等......根据情况几乎可以加载任何内容)我尝试使用height属性查看是否有内容(div根据内容扩展)。这个想法没问题,但现在我有另一个问题:我必须在它上面添加display:none。当我这样做时,高度总是加载为0.我不能使用可见性,因为div有10px填充,我不想看到什么时候没有显示。所以我回到原点...找到某种方式来查看在所有情况下div是否为空。

知道我该怎么办?

3 个答案:

答案 0 :(得分:6)

var d = $('#myDiv');
var empty = d.text().trim().length === 0 || !d.is(':visible');

答案 1 :(得分:4)

这个应该有效。 http://jsfiddle.net/fedmich/SmRnT/

我正在通过Regex

清理html评论
 $(function() {
    var w = $('#whatever').clone();
    w.find(':hidden').remove();

    var html = w.html();
    html = html.replace(/<!--.*-->/g,'')
    html = $.trim(html);

    alert( html );
});​

总结

 clone the object
 remove hidden elements
 remove html comments
 $.trim(  )

答案 2 :(得分:3)

如果你不计算空格,就好像某些东西不是空的那样:

$("selector").is(":empty")

OR

$("selector").contens().length

诀窍。

如果您不想将文本节点计为空:

$("selector").children().length

请参阅:
http://api.jquery.com/empty-selector/
http://api.jquery.com/contents/
http://api.jquery.com/children/