我需要解析我的网站并将新版本保存到变量中。
例如,我有这样的代码:
<body>
<div data-newname="test"></div>
<div data-newname="test2"></div>
</body>
因此新代码应为:
<body>
{{Start:test}}{{End::test}}
{{Start:test2}}{{End::test2}}
</body>
我想使用replacewiths方法,但这对我没有帮助:(也许是正则表达式?
答案 0 :(得分:1)
您要搜索replaceWith()
更新:逆序替换最里面的第一个
$($('[data-newname]').get().reverse()).replaceWith(function() {
let data = $(this).data('newname')
return `{{Start:${data}}}${$(this).html()}{{End::${data}}}`
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div data-newname="test1">
Test1
<div data-newname="test2">Test2</div>
</div>
<div data-newname="test3">Test3</div>
答案 1 :(得分:0)
您可以使用jQuery replaceWith()
重新包装元素。
由于覆盖外部元素的HTML将删除集合中的嵌套元素,因此我将其包装在while
中,以确保嵌套元素也得到更新。
while ($("[data-newname]").length) {
$("[data-newname]").replaceWith(function() {
let data = $(this).data("newname");
return `{{Start:${data}}}${$(this).html()}{{End::${data}}}`
});
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div data-newname="test">
<div data-newname="nested">Nested</div>
</div>
<div data-newname="test2">Test2</div>