Javascript 有没有直接的方法可以在jQuery中获得最小的HTML节点结构?
这是输入节点结构Javascript 有没有直接的方法可以在jQuery中获得最小的HTML节点结构?,javascript,html,jquery,nodes,Javascript,Html,Jquery,Nodes,这是输入节点结构 可乐 可乐 可乐 可乐 内容1 内容2 内容3 内容4 这就是想要的输出结构 可乐 可乐 可乐 可乐 内容1 内容2 内容3 内容4 我可以通过一些映射或循环手动删除元素,但我想知道是否有更好的方法可以在没有属性的情况下获得尽可能少的HTML 要摆脱…,。您可以循环th获取text(),然后再次使用text()进行设置,这样可以消除额外的标记 例如 const c=$('table').clone(); c、 查找('*')。removeAttr('class sty
可乐
可乐
可乐
可乐
内容1
内容2
内容3
内容4
这就是想要的输出结构
可乐
可乐
可乐
可乐
内容1
内容2
内容3
内容4
我可以通过一些映射或循环手动删除元素,但我想知道是否有更好的方法可以在没有属性的情况下获得尽可能少的HTML 要摆脱
…
,。您可以循环th
获取text()
,然后再次使用text()
进行设置,这样可以消除额外的标记
例如
const c=$('table').clone();
c、 查找('*')。removeAttr('class style');
c、 查找('th').each(函数(){$(this).text($(this.text());});
console.log(c[0].outerHTML)代码>
可乐
可乐
可乐
可乐
内容1
内容2
内容3
内容4
当然,这很容易
在这里,我为您提供了一个代码沙盒:
在Keith答案的插图中,这将删除所有属性,而无需对每个removeAttr进行硬编码。是的,我明白了,这很有趣,谢谢。我将混合这两个答案,因为我还需要执行c.find('th')。每个(function(){$(this.text($(this.text());})
要准确地删除每个单元格中的额外节点,请执行与您的答案相同的步骤。如果我执行c.find('*').removeAttr('class style')代码>我得到错误未捕获范围错误:超过最大调用堆栈大小
。所以,如果我想这样做,我需要做一些小的选择来完成它
$(".noattrs *").each(function() {
// first copy the attributes to remove
// if we don't do this it causes problems
// iterating over the array we're removing
// elements from
var attributes = $.map(this.attributes, function(item) {
return item.name;
});
// now use jQuery to remove the attributes
var el = $(this);
$.each(attributes, function(i, item) {
el.removeAttr(item);
});
})