2013-12-13 183 views
2

我只是想知道如何检查div是否没有子元素,因为如果元素没有加载到指定div中,我需要放置一个占位符文本。检查div是否有html元素

这里是我的代码:

var test = ($('#'+chartId)).children().length; 
console.log(test); 
if(test==""){ 
    alert('empty'); 
} 
else{ 
    alert('present'); 
} 

将这项工作,如果我想如果Flash组件被加载到一个div来检测?

+0

你为什么不尝试一下,并询问如果它不工作吗? – strauberry

+0

您不需要将长度转换为字符串。只要'if($(“#id”)。length)'会做。是的,'children()'只会返回HTML孩子,所以你应该安全使用 – CodingIntrigue

回答

4

.length是0并且在没有儿童时不为空。你还可以缩短你的代码了一下,像这样:

if(!($('#'+chartId)).children().length){ 
    alert('empty'); 
} 
else{ 
    alert('present'); 
} 
+1

但是'0 ==“”'是真的,那是他正在使用的测试。不是最佳实践,但相当于你拥有的。 –

4

试试这个:

if($('#' + chartId).children().length > 0){ 
    alert('present'); 
} 
else{ 
    alert('empty'); 
} 

DEMO

+0

这个工作与SWF元素?或只有html? –

+0

如果在一个div或标签内是的,你可以数它@ a_miguel6687 –

+0

如果它的内部是一个标签呢? –

0

你正在做的比较长(数字)到一个空的错误串。如果没有任何内容,并且您打电话给.length,它将返回0,而不是空字符串。

var length = $('#one').children().length; 
if (length > 0) { 
    alert('hi'); 
} 
if (length === 0) { 
    alert('bye'); 
} 

小提琴:http://jsfiddle.net/KyleMuir/349Uq/

+0

这将工作与一个SWF对象元素?它似乎并不适用于我 –

+0

张贴您的标记,我们可以从那里:) –

+0

是的,它已经工作的问题是,因为我把条件在回调这是错误的,因为假设闪光灯不存在浏览器 –