appendToを使用して DOM ツリーの一部を移動すると、移動中のスクリプト ブロックが再実行されます。つまり、2 回実行されます。
DOM セクション内のスクリプト ブロックを再実行せずに DOM セクションを移動するより良い方法はありますか?
appendToを使用して DOM ツリーの一部を移動すると、移動中のスクリプト ブロックが再実行されます。つまり、2 回実行されます。
DOM セクション内のスクリプト ブロックを再実行せずに DOM セクションを移動するより良い方法はありますか?
2つのこと:
まず、スクリプトをコードに直接埋め込むことはお勧めできません。それらはヘッダーで参照され、別のファイルに含まれている必要があります。
appendTo()
第二に、あなたが見ている DOM 要素の HTML 書き換えと同様に、そのスクリプトが書かれたとおりに再び実行されるのを防ぐことはできないと思います。これは、要素全体ではなく、テキストに直接アクセスする必要があることを意味します。@Ohgodwhyの解決策は正しいです:
$("#one").text().appendTo("#two")
ただし (これが宿題ではない場合)、スクリプトをヘッダーに移動することを検討してください。これが現在のベスト プラクティスです。
私は前に似たようなことをしなければなりませんでした...ハッキーですが... http://jsfiddle.net/teewuane/EHDqE/3/
HTML
<div id="one">
a
<script type="text/javascript">
if(times_executed == 0){
alert(1);
times_executed+=1;
}
</script>
</div>
<div id="two">
b
</div>
脚本
times_executed = 0;
$("#one").appendTo("#two");