Javascript 在jQuery节点中放置父标记名

Javascript 在jQuery节点中放置父标记名,javascript,jquery,html,Javascript,Jquery,Html,我有一个包含大约100个元素的html文件。在我的javascript文件中,我有一个var,它使用jQuery保存html文档中的所有元素。然后我有一个var,它保存html文档中作为文本节点的所有元素。我想做的是为每个非文本节点创建一个新的子节点,并将innerHTML设置为其父标记名。我该怎么做呢 //All elements var elements = $("*") //Text Nodes only var textNodes = elements.contents().filte

我有一个包含大约100个元素的html文件。在我的javascript文件中,我有一个var,它使用jQuery保存html文档中的所有元素。然后我有一个var,它保存html文档中作为文本节点的所有元素。我想做的是为每个非文本节点创建一个新的子节点,并将innerHTML设置为其父标记名。我该怎么做呢

//All elements
var elements = $("*")

//Text Nodes only
var textNodes = elements.contents().filter(function() {
    return this.nodeType == 3;
}); 

我可以提出一个稍微干净一点的解决方案,它不会用额外的元素污染DOM树(使用
*
选择器可以有很多元素)。为什么不在伪元素之后使用一些CSS来显示标记名呢

首先为每个元素设置实际标记名,然后使用此CSS显示它们:

$(“*”).attr('data-tag',function(){
返回此.tagName;
});
*:之后{
内容:attr(数据标签);
字体大小:10px;
颜色:#AAA;
}


测试内容
我不确定是否完全理解您的问题,但这将需要查找所有不包含文本的节点,并在它们后面附加一个包含其节点名称的

//All elements
var elements = $("*")

//Text Nodes only
var nodes = elements.contents().filter(function (i) {
    if ( this.nodeType !== 3 ) {
      var el = document.createElement('div');
          el.innerHTML = this.nodeName;
      this.appendChild(el)
    }
}); 

为什么不
返回这个.nodeType!=3
并处理所有非文本节点?为什么需要
textNodes
呢?@BatScream如果要创建新的子节点,我该怎么做?我对jQuery完全陌生,所以我不太了解。通用选择器选择所有元素,即节点类型为1的节点,不需要过滤器<代码>$('*').append(函数(){return''+this.tagName+'';})
?你为什么要这么做?是为了调试吗?谢谢你们的帮助,但@Vohumans解决方案正是我想要的。