我正在尝试识别可能包含或不包含注释标记和/或空格的空元素。
以下HTML结构在我正在使用的环境中很常见:
<div class="container container-no-title">
<div id="dnn_ctr6735_ContentPane" class="container-padding DNNAlignright">
<!-- Start_Module_6735 -->
<div id="dnn_ctr6735_ModuleContent">
<!-- End_Module_6735 -->
</div>
</div>
</div>
我最初的jQuery是:
$('.container-padding > div').each(function() {
if ($(this).is(":empty")) {
$(this).parent('.container-padding').remove();
};
});
但这并不考虑空白或评论标签。我找到了解决空白的其他问题,但没有解决注释标记的问题,我真的很想保留这个简单的jQuery片段。
干杯, 史蒂夫
答案 0 :(得分:4)
你试过了吗?
$('.container-padding > div').each(function() {
if ($(this).text().match(/^\s*$/)) {
$(this).parent('.container-padding').remove();
}
});
甚至
$('.container-padding').each( function() {
if ($(this).text().match(/^\s*$/)) {
$(this).remove();
}
});
答案 1 :(得分:1)
如果我理解正确,空元素应该没有孩子:
$(this).children().length == 0
jQuery不会为你忽略空白和评论吗?
答案 2 :(得分:1)
例如,迭代element.childNodes:
if (element.childNodes[i].nodeType != 1)
// node is not an element (text/whitespace or comment)
或:
if (element.childNodes[i].nodeType == 8)
// node is a comment
查看here了解详情。
答案 3 :(得分:0)
评论不是DOM树的一部分,因此AFAIK无法访问它们。