2017-11-30 6 views
0

これは可能ですか?下のコードを試してみて、何かが見当たりませんでしたか?ページ全体をvarに読み込み、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

なぜですか?どうしてh1 htmlを変更しないのですか? – Taplar

答えて

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>

スニペットでやってみようとしているHTMLページ全体を置き換えることはできないと思います.すべてを上書きしようとしているスクリプトを含めてを上書きします。ほとんどの場合、bodyの内容を上書きします(以前はDOMに添付されていたイベントバインディングなどが破棄されるため、それでも残念ですが、変更をDOMツリーの一部として制限しようとします缶)

+0

良いコメント。はい、これはh1タグだけではない別の理由によるものです。現在のページのHTMLを取得し、いくつかの部分を操作してからファイルに保存したい実際には、Ajaxを使って外部のhtmlファイルを取得すると動作しますが、ページ全体を取得するのは難しいようです。 –

0

は、あなただけの<h1/>のテキストを変更し、すべて一緒のhtmlの全体を変更することを避けることができませんでしたか?それは私にとってかなり冗長なようです。

$(function() { 
 

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

 
<h1> 
 
    TEST 
 
</h1>

関連する問題