Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jquery如果div id有子项_Jquery_Children - Fatal编程技术网

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()