/ /変更後のjQueryの読み込み - javascript、jquery、html

HTML変更後のjQueryの読み込み - javascript、jquery、html

私はこれらのHTMLコードを "body"タグに持っています:

<body>
<center>
Hello!<br />
<textarea cols="65" rows="10" id="code"></textarea>
</center>
</body>

そして、私はjQueryのこのコードを使って上のテキストエリアにすべてのページコードを配置したい:

$("textarea#code").val( $("body").html() );

さて、私は、この "textarea"の "body"のHTMLを以下のように変更するようにしたい:

$("textarea#code").change(function(){
$("body").html( $(this).val() );

$("textarea#code").val( $("body").html() );
});

最初の変更後、すべてのことがOKでHTMLは正常に変更されますが、その後、ユーザーは再度HTMLを変更することはできません!言い換えれば、JavaScriptは読み込まれませんでした。

これはフィドルの私のコードです

回答:

回答№1の場合は3

あなたは委任が必要です:

$("textarea#code").val($("body").html());
$(document).change("textarea#code", function (e) {
$("body").html($(e.target).val());
$("textarea#code").val($("body").html());
});

JSFIDDLE


回答№2の場合は1

html 設定メソッドとしてのメソッド 破壊的な、すなわち、渡された値を解析してすべての内容を置換し、 新しい 要素。イベントハンドラは要素にバインドされ、各DOMオブジェクトは一意です。使用後 html メソッドは古い要素が削除されるので、それらにアタッチされたイベントハンドラはもう機能しません。この場合、イベント委譲を使用する必要があります。

それは、 textatea ここでは、ページ全体のHTMLコンテンツを変更することは意味がありません。ページを動的に編集する場合は、WYSIWYGエディタを使用するか、 contentEditable 代わりに属性。


回答№3の場合は0

あなたの体のHTMLは動的に変化しています。あなたは、

$(document).on("change","textarea#code",function(){
$("body").html( $(this).val() );
$("textarea#code").val( $("body").html() );
});

代わりに

$("textarea#code").change(function(){
$("body").html( $(this).val() );

$("textarea#code").val( $("body").html() );
});

JSFIDDLE DEMO