[英]How do I remove all of the nested span tags within a span tag in javascript?
我的 innerHTML 看起来像这样:
<span class="test"> <span> </span> Hello I am here <span class="test1"> </span> </span>
我想删除所有嵌套的跨度标签,以便得到这个:
<span class="test"> Hello I am here </span>
我试过 using.replace('', '').replace('', '') in 但必须以某种方式检查最后一个跨度,而且可能有不同的跨度是从谷歌文档动态生成的,所以它会如果我可以对所有不是第一个或最后一个跨度的跨度进行替换,那就更好了。
尝试这个
$('.test').find('span').remove()
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <span class="test"> <span>dummy data </span> Hello I am here <span class="test1"> dummay data</span> </span>
您可以通过将外部跨度的textContent
设置为它自己的textContent
来做到这一点 - 因为读取元素的textContent
不会返回任何散布在文本中的标记标签。
重置textContent
还可以避免 HTML 解析器解析文本内容,就像用于设置外部元素的innerHTML
属性一样。
"use strict"; let testSpan = document.querySelector(".test"); testSpan.textContent = testSpan.textContent; console.log( testSpan.outerHTML);
<span class="test"><span> </span> Hello I am here <span class="test1"> </span> </span>
如果您愿意,可以在分配回textContent
之前用单个空格字符替换连续的空白字符。
这将起作用
"use strict"; const elm = document.querySelector(".test"); elm.innerHTML = elm.innerText; console.log(elm.outerHTML);
<span class="test"><span> </span> Hello I am here <span class="test1"> </span> </span>
span
元素。 const allSpan = document.querySelectorAll("span"); allSpan.forEach(item => { if(item.childElementCount === 0 && item.textContent.trim().length === 0){ item.parentElement.removeChild(item) } })
<span class="test"> <span> </span> Hello I am here <span class="test1"> </span> </span>;
您可以通过在浏览器中检查代码来查看结果
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.