where
我希望替换正文的所有内容,但不要更改脚本标记内的脚本标记和内容。
如果我<body>
<div>blabla</div>
<div>blabla2</div>
<script>
....
</script>
</body>
,它会替换整个内容,使其看起来像:
$('body').html('<span>hello</span>')
但我喜欢的是它看起来像:
<body>
<span>hello</span>
</body>
基本上替换了身体EXCEPT脚本中的所有内容。这有可能吗?
答案 0 :(得分:3)
如果您知道您的脚本是body元素中的最后一个脚本(通常是这种情况),您可以这样做:
$("body *:not(script:last)").remove();
$("body").prepend($("<div>Test!</div>"));
答案 1 :(得分:1)
尝试使用此代码:
$('body').html('<span>hello</span><script>'+$('body script').html()+'</script>');
答案 2 :(得分:1)
如果你在体内替换整个html,它会删除它中的每一个东西。
最好的方法是在单独的变量中定义脚本,然后替换正文,然后将该变量附加到正文中
var scriptHtml = $('body').find('script');
$('body').html('<span>hello</span>');
$('body').append(scriptHtml);
答案 3 :(得分:1)
$("body").contents().not("script").remove();
$("<div>Test!</div>").prependTo("body");
这假设脚本是身体的孩子。如果它们可以嵌套得更深,请先执行此操作:
$("body * script").appendTo("body");
答案 4 :(得分:0)
找到div并删除......
$('body').prepend('<span>hello</span>').find("div").remove();
答案 5 :(得分:0)
您可以将remove()
方法与:not()
选择器一起使用
$(document.body).find(':not(script)').remove();
// body is clear. do whatever you want.
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
var test1;
</script>
<span>hello</span>
<script>
var test2;
</script>
<p>how<span>are</span>
</p><span>you</span>
&#13;