检查div元素是否包含HTML元素

3
我想知道如何检查一个div是否没有子元素,因为如果指定的元素没有加载到该div中,我需要放置一个占位符文本。
以下是我的代码:
var test = ($('#'+chartId)).children().length;
console.log(test);
if(test==""){
    alert('empty');
}
else{
    alert('present');
}

如果我想检测Flash组件是否加载到DIV中,这个代码会有效吗?

为什么不试一下,如果不行再问呢? - strauberry
你不需要将长度转换为字符串。只需使用 if($("#id").length) 即可。是的,children() 只会返回 HTML 子元素,因此您可以放心使用它。 - CodingIntrigue
3个回答

5
当没有子元素时,

.length为0而不是空。此外,您可以缩短代码,如下所示:

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

1
但是 0 == "" 是真的,这就是他使用的测试。虽然不是最佳实践,但与您所拥有的等效。 - Paul Draper

4

试试这个:

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

演示


如果在一个div或者标签中,你可以计算它的数量。 - Alessandro Minoccheri
如果它在<object>标签内呢? - a_miguel6687
我已经更新了我的演示,现在请使用对象@a_miguel6687进行尝试。 - Alessandro Minoccheri

0
你犯的错误是将长度(一个数字)与空字符串进行比较。如果没有任何内容并且您调用 .length,它将返回0,而不是空字符串。
var length = $('#one').children().length;
if (length > 0) {
    alert('hi');
}
if (length === 0) {
    alert('bye');
}   

代码片段:http://jsfiddle.net/KyleMuir/349Uq/


这个能用于swf对象元素吗?对我来说似乎不起作用。 - a_miguel6687
是的,它已经可以工作了,问题在于我把条件放在回调函数里,这是错误的,因为假设浏览器中不存在flash。 - a_miguel6687

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接