Javascript 如何按属性展开html
如何按属性展开html:Javascript 如何按属性展开html,javascript,html,Javascript,Html,如何按属性展开html: <div dir="rtl"><div><div dir="rtl"><h2>test</h2></div></div></div> 你是说这个 unwrap是一个jQuery语句 $(“[dir=rtl]”)。每个(函数(){$(this.children().unwrap()}) 测试 定义此unwrap()函数: funct
<div dir="rtl"><div><div dir="rtl"><h2>test</h2></div></div></div>
你是说这个
unwrap是一个jQuery语句
$(“[dir=rtl]”)。每个(函数(){$(this.children().unwrap()})
测试
定义此unwrap()
函数:
function unwrap(el, selector) {
var descendantsArr = Array.from(el.querySelectorAll(selector));
if (el.matches(selector))
removeSelf(el);
descendantsArr.forEach(d => unwrap(d, selector));
function removeSelf(el) {
var childNodesArr = Array.from(el.childNodes),
parent = el.parentElement;
el.remove();
childNodesArr.forEach(n => {
parent.appendChild(n);
})
}
}
然后使用它:
unwrap(yourRootElement, '[dir="rtl"]');
yourRootElement
可能是document.body
(如果要扫描整个正文),也可能是要从中开始扫描的某个根元素
看
function unwrap(el, selector) {
var descendantsArr = Array.from(el.querySelectorAll(selector));
if (el.matches(selector))
removeSelf(el);
descendantsArr.forEach(d => unwrap(d, selector));
function removeSelf(el) {
var childNodesArr = Array.from(el.childNodes),
parent = el.parentElement;
el.remove();
childNodesArr.forEach(n => {
parent.appendChild(n);
})
}
}
unwrap(yourRootElement, '[dir="rtl"]');