jquery如果div id有子项
这jquery如果div id有子项,jquery,children,Jquery,Children,这如果-条件是给我带来麻烦的原因: 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 (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 }
此代码段将使用选择器确定元素是否有子元素:
if ($('#myfav').is(':parent')) {
// do something
}
请注意,:parent
还将具有一个或多个文本节点的元素视为父元素
因此,some text
和some text
中的div
元素都将被视为父元素,但
不是父元素
if ( $('#myfav').children().length > 0 ) {
// do something
}
这应该行得通。
children()
函数返回包含子对象的JQuery对象。因此,您只需检查大小,看看它是否至少有一个子项。另一个选项是:
if ( $('#myFav > *').length > 0 ) {
// do something
}
实际上可能是最快的,因为它严格使用Sizzle引擎,而不一定像以前那样使用任何jQuery。但这可能是错误的。尽管如此,它仍然有效。实际上有一种非常简单的本地方法:
if( $('#myfav')[0].hasChildNodes() ) { ... }
请注意,这还包括简单的文本节点,因此对于
文本也是如此,如果您想检查div是否有特定的子节点(例如),请使用:
if ($('#myfav').children('p').length > 0) {
// do something
}
jQuery方式
在jQuery中,可以使用$('#id').children().length>0
来测试元素是否有子元素
演示
var test1=$('#test');
var test2=$(“#test2”);
if(test1.children().length>0){
test1.addClass(“成功”);
}否则{
test1.addClass('failure');
}
if(test2.children().length>0){
test2.addClass(“成功”);
}否则{
test2.addClass('failure');
}
。成功{
背景:#9f9;
}
.失败{
背景:#f99;
}
儿童
没有孩子
您还可以检查div是否有特定的子级
if($('#myDiv').has('select').length>0)
{
// Do something here.
console.log("you can log here");
}
谢谢你的回答。这对我来说很有用。我知道我和孩子们的关系是正确的(),但不知道它出了什么问题。显然,大小可以是0,这是有意义的。如果向子元素添加选择器,还可以检查元素是否有与特定选择器匹配的子元素,例如,如果您想查看元素是否有特定类的子元素。小问题。不要吹毛求疵,而是children()应调用.length
,而不是size()根据这里的jQuery文档:如果节点只包含文本怎么办?@sirwilliam节点将返回0长度。是的,我认为这个答案比S Pangborn的更优雅。尽管两者都是完全合法的。@Milo LaMar,我怀疑性能没有太大差异,但唯一确定的方法是尝试它!而且,您必须删除S在您的示例中,在#myfav
和之间配速:parent
,否则选择器与我的答案不一样。非常少量的阅读对我来说就足够了。摘自附加说明:因为:parent是jQuery扩展,而不是CSS规范的一部分,所以使用:parent的查询不能接受ad本机DOM querySelectorAll()方法提供的性能提升优势。要在使用:parent选择元素时获得最佳性能,请首先使用纯CSS选择器选择元素,然后使用.filter(“:parent”).
性能测试结果为0.002s-我更喜欢这种方式,因为它可读性最好…我很困惑,这不是最好的答案吗?$(…)[0]未定义
如果未找到\myfav
可能会发生这种情况。我会在应用该条件之前测试第一个匹配元素的存在性,即:$('myfav')[0]&$('myfav')[0].hasChildNodes()
。