将整个页面加载到var中,使用jQuery进行操作并重写到页面?

时间:2017-11-30 17:56:33

标签: jquery

这可能吗?尝试使用下面的代码,但遗漏了一些东西?

https://jsfiddle.net/Ld7t7wag/1/

$("h1").click(function(){
  var htmlvar = $('html')[0].outerHTML;
  $(htmlvar).find("h1").html("NEWTITLE");
  $("html").html($("html", htmlvar).html());
 });

2 个答案:

答案 0 :(得分:1)

(当然,通常,您只需直接在DOM中修改h1内容。我假设您有充分的理由想要在与页面本身分离的片段中执行此操作,或者你不会打扰提问。)



// Get your html string from wherever:
var htmlstr = $('#foo').html(); // or just a string

// convert the string into a jQuery object:
var fragment = $(htmlstr);

// Manipulate its contents as needed:
fragment.find("h1").html("NEWTITLE");

// Now put the changed HTML string wherever:
$('#foo').html(fragment.html())

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div id="foo"><div>Here are some <h1>HTML tags</h1></div></div>
&#13;
&#13;
&#13;

我不相信您可以替换整个HTML页面,因为您尝试在您的代码段中执行操作 - 这会覆盖所有内容,包括尝试覆盖的脚本。最多覆盖body内容(尽管这样做太过分了,因为它会破坏以前附加到DOM的任何事件绑定等) - 尝试将更改限制为一小部分你可以使用DOM树。)

答案 1 :(得分:0)

你不能只改变<h1/>的文本并避免一起更改整个html吗?对我来说这似乎是多余的。

&#13;
&#13;
$(function() {

  $("h1").click(function() {
    $(this).text('NEWTITLE');
  });
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<h1>
  TEST
</h1>
&#13;
&#13;
&#13;