我需要使用JQUERY检查一个元素是否包含特定的子类。
我尝试过:
if ($('#myElement').has('.myClass')) {
do work son
}
没起作用。
我的HTML代码布局如下:
<div id="myElement">
<img>
<span>something</span>
<span class="myClass">Hello</span>
</div>
我需要使用JQUERY检查一个元素是否包含特定的子类。
我尝试过:
if ($('#myElement').has('.myClass')) {
do work son
}
没起作用。
我的HTML代码布局如下:
<div id="myElement">
<img>
<span>something</span>
<span class="myClass">Hello</span>
</div>
#myElement
的子元素中搜索 .myClass
:if($('#myElement .myClass')).length > 0)
>
。if($('#myElement > .myClass')).length > 0)
find
并检查任何结果:if($('#myElement').find('.myClass').length > 0)
或仅适用于一级子元素:
if($('#myElement').children('.myClass').length > 0)
只需使用 QS
var hasClass = document.getElementById("myElement").querySelector(".myClass");
或者您可以递归遍历子元素
var element = document.getElementById("myElement");
var hasClass = recursivelyWalk(element.childNodes, function hasClass(node) {
return node.classList.contains("myClass");
});
function recursivelyWalk(nodes, cb) {
for (var i = 0, len = nodes.length; i < len; i++) {
var node = nodes[i];
var ret = cb(node);
if (ret) {
return ret;
}
if (node.childNodes && node.childNodes.length) {
var ret = recursivelyWalk(node.childNodes, cb);
if (ret) {
return ret;
}
}
}
}
使用 recursivelyWalk
和 .classList
(可以模拟)。
或者您可以使用 jQuery
$("#myElement .myClass").hasClass("myClass");
如果您想要没有 jQuery 的组合操作,则可以尝试 NodeComposite
NodeComposite.$("#myElement *").classList.contains("myClass");
尝试:
if($('#myElement').children('.myClass').length) {
// Do what you need to
}
.length
”属性。上述代码检查#myElement
中是否有任何.myClass
子元素,并且如果有(当.length
不为0时),则执行if()
语句中的代码。if($('#myElement').children('.myClass').length > 0) {
// Do what you need to
}
你也可以使用$('#myElement .myClass').length
,但是对于某些人来说,$.children()
更清晰明了。如果要查找不是直接子元素的元素,请使用$.find()
代替$.children()
。
if($.contains($('#myElement'), $('.myClass'))){
alert("True");
}
else{alert("False")};
$('#myElement').children('.myClass').length
更加简洁明了,同时也更少复杂度,可能会更快一些。 - Bojangles
document.getElementById("myElement").getElementsByClassName("myClass").length
- Raynos