如何使用可能包含注释标记的jQuery来标识空元素?

时间:2009-11-12 21:06:53

标签: javascript jquery

我正在尝试识别可能包含或不包含注释标记和/或空格的空元素。

以下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片段。

干杯, 史蒂夫

4 个答案:

答案 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)

很高兴tv的解决方案适合你。您还可以通过检查nodeType值来使用直接DOM来查找不是“元素”的节点。

例如,迭代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无法访问它们。