如何用纯JS移除标签并保留其子节点在原位置?
解决方案
你要的这种移除标签但保留子内容的需求,有两种很简便的实现方式,不用手动移除再追加子节点:
原生JavaScript写法
直接找到目标元素,用它的子节点替换自身就行:
const target = document.querySelector('.removeThisTag'); target.replaceWith(...target.childNodes);
childNodes会获取目标span里的所有子节点(包括文本、元素),replaceWith直接把目标元素替换成这些子节点,完美保留原位置和内容。
jQuery写法(更简洁)
如果用jQuery的话,一行代码就能搞定:
$('.removeThisTag').contents().unwrap();
contents()获取目标标签里的所有内容,unwrap()则移除包裹这些内容的父标签(也就是那个带removeThisTag的span),直接得到你要的结果。
另外你之前用removeAttribute()没用是正常的,这个方法只是移除元素的属性(比如把class="removeThisTag"删掉),但标签本身还留在DOM里,自然达不到移除整个span的效果。
内容的提问来源于stack exchange,提问作者AntonAntonoff
相关产品推荐
相关产品推荐

