0

我有以下设置:

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

我需要知道什么时候“whateverdiv”里面什么都没有。问题是,当我什么都不说时,我的意思是用户什么都看不到。所以如果在 div 里面有类似的东西

      <div style="display: none">LOOOONG TEXT</div>

已加载,我认为它是空的。

如果充满空格也是空的,等等......如果用户没有看到任何东西是空的。

由于要涵盖的情况太多(高度为 0 的内容、不显示的内容、空格、制表符、隐藏的输入等……根据情况,几乎所有东西都可以在那里加载)我尝试使用 height 属性来查看是否有内容(div 会根据内容展开)。这个想法行之有效,但现在我遇到了另一个问题:有时我必须添加 display: none 。当我这样做时,高度总是加载为 0。我不能使用可见性,因为 div 有 10px 填充,我不想看到什么时候没有显示。所以我回到第一个问题......找到某种方法来查看在所有情况下 div 是否为空。

知道我该怎么做吗?

4

3 回答 3

6
var d = $('#myDiv');
var empty = d.text().trim().length === 0 || !d.is(':visible');
于 2012-07-09T09:55:07.687 回答
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(  )
于 2012-07-09T09:52:22.923 回答
3

如果你不把空格算作不是空的:

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

或者

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

行得通。

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

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

见: http: //api.jquery.com/empty-selector/
http://api.jquery.com/contents/
http://api.jquery.com/children/

于 2012-07-09T09:55:15.807 回答