我有以下设置:
<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是否为空。
知道我该怎么办?
答案 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/