JQueryを使用しているWebページで作業しています。サーバーからデータを取得してdivを更新するAjax呼び出しがあります。そのデータの内部にはjQuery関数がありますが、データがページにロードされた後に関数が呼び出されていません。ページに適切なjsファイルがすでに含まれています。
これは、Ajax呼び出しから返され、divに配置されるものです。
<script type="text/javascript">
$(function() {
$('input').myFunction('param');
});
</script>
<p> other html </p>
HTMLがページに挿入された後に返されたJavaScriptを実行するにはどうすればよいですか?
(私はRailsをjRailsプラグインで使用しています)
HTMLコンテンツでJavaScriptタグの評価が必要な場合は、ajax呼び出しのdataTypeオプションを "html"に設定する必要があります。
$.ajax({
type: "GET",
url: "yourPage.htm",
dataType: "html"
});
または、.jsファイルをロードして実行する場合は、dataType "script":
$.ajax({
type: "GET",
url: "test.js",
dataType: "script"
});
詳細はこちら: Ajax/jQuery.ajax
同様の問題があり、ajaxを介して取得しているいくつかのフィールドに小さなjquery日付ピッカーを追加する必要がありました。ここに私がそれを回避するためにしたことがあります...私のajax呼び出しからこのブロック全体を返す代わりに:
<script type="text/javascript">
$(function() {
$('input').myFunction('param');
});
</script>
<p> other html </p>
私はこれを返します(構成された| x |セパレータに注意してください)
$(function() {
$('input').myFunction('param');
});
|x|
<p> other html </p>
次に、ajaxを介してデータを受信すると、戻り値を2つの部分に分割します。実行するjavascriptと表示するhtmlです。
r = returnvalfromajax.split("|x|");
document.getElementById('whatever').innerHTML = r[1];
eval(r[0]);
変化
<script type="text/javascript">
...
</script>
に:
<script>
...
</script>
私の問題を修正しました。