这if
- 条件给我带来了麻烦:
if (div id=myfav has children) {
do something
} else {
do something else
}
我尝试了以下所有方法:
if ( $('#myfav:hasChildren') ) { do something }
if ( $('#myfav').children() ) { do something }
if ( $('#myfav:empty') ) { do something }
if ( $('#myfav:not(:has(*))') ) { do something }
答案 0 :(得分:405)
if ( $('#myfav').children().length > 0 ) {
// do something
}
这应该有效。 children()
函数返回包含子项的JQuery对象。所以你只需要检查大小,看看它是否至少有一个孩子。
答案 1 :(得分:51)
此代码段将确定该元素是否有使用:parent
选择器的子项:
if ($('#myfav').is(':parent')) {
// do something
}
请注意,:parent
还会将具有一个或多个文本节点的元素视为父级。
因此,div
和<div>some text</div>
中的<div><span>some text</span></div>
元素将被视为父级,但<div></div>
不是父级。
答案 2 :(得分:46)
另一种选择,仅仅是为了它的目的:
if ( $('#myFav > *').length > 0 ) {
// do something
}
实际上可能是最快的,因为它严格使用Sizzle引擎,而不一定是任何jQuery。可能是错的。然而,它有效。
答案 3 :(得分:15)
实际上有一个非常简单的原生方法:
if( $('#myfav')[0].hasChildNodes() ) { ... }
请注意,这还包括简单的文本节点,因此<div>text</div>
。
答案 4 :(得分:13)
如果你想检查div有一个特定的孩子(说<p>
使用:
if ($('#myfav').children('p').length > 0) {
// do something
}
答案 5 :(得分:4)
您还可以检查div是否有特定的孩子,
if($('#myDiv').has('select').length>0)
{
// Do something here.
console.log("you can log here");
}
答案 6 :(得分:3)
在jQuery中,您可以使用$('#id').children().length > 0
来测试元素是否有子元素。
var test1 = $('#test');
var test2 = $('#test2');
if(test1.children().length > 0) {
test1.addClass('success');
} else {
test1.addClass('failure');
}
if(test2.children().length > 0) {
test2.addClass('success');
} else {
test2.addClass('failure');
}
.success {
background: #9f9;
}
.failure {
background: #f99;
}
<script src="https://code.jquery.com/jquery-1.12.2.min.js"></script>
<div id="test">
<span>Children</span>
</div>
<div id="test2">
No children
</div>
如果您不想使用jQuery,可以使用document.getElementById('id').children.length > 0
来测试元素是否有子元素。
var test1 = document.getElementById('test');
var test2 = document.getElementById('test2');
if(test1.children.length > 0) {
test1.classList.add('success');
} else {
test1.classList.add('failure');
}
if(test2.children.length > 0) {
test2.classList.add('success');
} else {
test2.classList.add('failure');
}
.success {
background: #9f9;
}
.failure {
background: #f99;
}
<div id="test">
<span>Children</span>
</div>
<div id="test2">
No children
</div>