コンテナーに追加する必要がある HTML を使用.load()
し$.ajax
て取得しようとしましたが、返された HTML 内の Javascript を要素に追加しても実行されません。
使用.load()
:
$('#new_content').load(url+' #content > *',function() {
alert('returned');
});
また、 $.ajax 呼び出しに切り替えてみました。次に、返された HTML からスクリプトを抽出した後、それをコンテナーに追加しましたが、同じ問題で、この場合は JS が実行されていないか、追加されていません。私が理解している<script>
ように、DOM 要素に aを追加しようとしています。このように眉をひそめていますか?
使用$.ajax
:
$.ajax({ url: url }).done(function(response) {
var source = $("<div>").html(response).find('#overview_script').html();
var content = $("<div>").html(response).find('#content').html();
$('#new_content').html(content);
$('<script>').appendTo('#new_content').text(source).html();
});
HTML を追加した後、コールバックでこの JavaScript を実行するのが理想的ですが、変数はコントローラーから返される値に設定されています。
要約すると、その HTML が追加された後に実行する必要がある JS を含む HTML を取得しようとしていますが、返された HTML のスクリプトが追加時に消えるか、またはそうするので、.load()
うまく使用できませんでした。$.ajax()
まったく実行しません。