Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 替换正文,但不替换其中的脚本? 布拉布拉 无稽之谈 ...._Javascript_Jquery_Html - Fatal编程技术网

Javascript 替换正文,但不替换其中的脚本? 布拉布拉 无稽之谈 ....

Javascript 替换正文,但不替换其中的脚本? 布拉布拉 无稽之谈 ....,javascript,jquery,html,Javascript,Jquery,Html,我想替换body的所有内容,但保留script标记和script标记中的内容不变 如果我执行$('body').html('hello'),它将替换整个内容,因此看起来像: <body> <div>blabla</div> <div>blabla2</div> <script> .... </script> </body> <body> <s

我想替换body的所有内容,但保留script标记和script标记中的内容不变

如果我执行
$('body').html('hello')
,它将替换整个内容,因此看起来像:

<body>
   <div>blabla</div>
   <div>blabla2</div>
   <script>
      ....
   </script>
</body>
<body>
  <span>hello</span>
</body>

你好
但我希望它看起来像:

<body>
   <div>blabla</div>
   <div>blabla2</div>
   <script>
      ....
   </script>
</body>
<body>
  <span>hello</span>
</body>

你好
...
基本上,除了脚本,所有的内容都被替换掉了。这可能吗?

请尝试使用以下代码:

<body>
  <span>hello</span>
  <script>...</script>
</body>
$('body').html('hello'+$('body script').html();
尝试使用以下代码:

<body>
  <span>hello</span>
  <script>...</script>
</body>
$('body').html('hello'+$('body script').html();

如果您知道您的脚本是body元素中的最后一个脚本(通常是这样),您可以这样做:

$('body').html('<span>hello</span><script>'+$('body script').html()+'</script>');
$(“body*:not(script:last)”).remove();
$(“body”)。前置($(“Test!”);

Fiddle:

如果您知道您的脚本是body元素中的最后一个脚本(通常是这样),您可以这样做:

$('body').html('<span>hello</span><script>'+$('body script').html()+'</script>');
$(“body*:not(script:last)”).remove();
$(“body”)。前置($(“Test!”);

Fiddle:

如果你在正文中替换整个html,显然它会删除其中的每一个内容

最好的方法是在单独的变量中定义脚本,然后替换主体,然后在主体中附加该变量

$("body *:not(script:last)").remove();
$("body").prepend($("<div>Test!</div>"));
var scriptHtml=$('body')。查找('script');
$('body').html('hello');
$('body').append(scriptHtml);

如果你在正文中替换整个html,显然它会从正文中删除所有内容

最好的方法是在单独的变量中定义脚本,然后替换主体,然后在主体中附加该变量

$("body *:not(script:last)").remove();
$("body").prepend($("<div>Test!</div>"));
var scriptHtml=$('body')。查找('script');
$('body').html('hello');
$('body').append(scriptHtml);

只需找到div并删除

var scriptHtml = $('body').find('script');
$('body').html('<span>hello</span>');
$('body').append(scriptHtml);
$('body').prepend('hello').find(“div”).remove();

只需找到div并删除

var scriptHtml = $('body').find('script');
$('body').html('<span>hello</span>');
$('body').append(scriptHtml);
$('body').prepend('hello').find(“div”).remove();

您可以将
remove()
方法与
:not()
类似的选择器一起使用

$(document.body).find(':not(script)').remove();
//身体是干净的。想做什么就做什么。

var-test1;
你好
var测试2;
你好

您可以将
remove()
方法与
:not()
选择器一起使用

$(document.body).find(':not(script)').remove();
//身体是干净的。想做什么就做什么。

var-test1;
你好
var测试2;
你好

最好在
正文
中有一个
包装器
,谢谢,但我正在寻找一个不引入任何其他div的解决方案。请将您的脚本放在
中。正文中不得保留任何脚本。说来话长。@foreyez,即使在
.html()
之后,
脚本仍然在运行!最好在
正文
中有一个
包装器
,谢谢,但我正在寻找一个不引入任何其他div的解决方案。请将脚本放在
中。正文中不得保留任何脚本。说来话长。@foreyez,即使在
.html()
之后,
脚本仍然在运行!