在DOM深层获取评论节点

时间:2015-08-12 13:04:23

标签: javascript jquery dom-manipulation

如何获得包含DOM中所有注释元素的数组或类数组(JQuery对象)? JQuery contents()只检索1个级别的元素。

更广泛的问题:我需要删除DOM中2个文本注释之间的所有元素。评论也可以在子元素中。

...html code...
<!--remove from here-->
...code...
<!--finish removing-->
...html code...

因此,在该方法之后,HTML DOM应该如下所示:

...html code...
...html code...

感谢。

1 个答案:

答案 0 :(得分:5)

您可以使用设置为whatToShow的{​​{1}} TreeWalker来查看文档中的所有节点。

NodeFilter.SHOW_ALL
var treeWalker = document.createTreeWalker(
  document.body,
  NodeFilter.SHOW_ALL,
  null,
  false
);

var commentList = [];

while (treeWalker.nextNode()){
  // keep only comments
  if (treeWalker.currentNode.nodeType === 8) 
    commentList.push(treeWalker.currentNode);
}

var node;
while (node !== commentList[1]) {
  node = commentList[0].nextSibling;
  node.parentElement.removeChild(node);
}