私は問題を抱えています。子ページをロードし、サブフォームでトリガーされるカスタム イベントを記録するスクリプトを含むページがあります。
----デフォルト.aspx----
<body>
<input type="button" class="clickable" value="Load child doc" />
<hr />
<div id="container"></div>
</body>
<script>
var clickHandler = function () {
$.ajax("Subform.aspx", {
method: "GET",
success: function (data) {
$('#container').html(data);
}
});
}
$(function () {
$('body').on('click', clickHandler);
$('body').on("dataLoaded", function (param) {
console.info("Custom event triggered", param);
})
});
----Subform.aspx には、カスタム イベント "dataLoaded" をトリガーするスクリプトがあります ----
<html>
<header>
<script src="scripts/jquery-1.7.1.js"></script>
</header>
<body>
..context of Subform...
<script>
$(function () {
$('body').trigger("dataLoaded", { key: "value from sub form" });
console.log("ChildPage loaded. dataLoaded event triggered")
})
</script>
.....
</body>
</html>
問題は、サブフォームがコンテナーにロードされた後 (および ajax でロードされたファイルでトリガーされたドキュメントの準備ができている - メッセージ「childPage loaded ..」が表示される)、カスタム イベント "dataLoaded" がトリガーされたが、ハンドラーが 1 回だけ呼び出されたことです。他のすべての ajax 呼び出しは、サブフォームのコンテキストを読み込み、テキスト「ChildPage がロードされました。dataLoaded イベントがトリガーされました」がログに記録され、イベント「dataLoaded」がトリガーされましたが、カスタム イベントのイベント ハンドラーはもう呼び出されません。子ページがロードされてカスタムイベントがトリガーされるたびに、そのハンドラーが呼び出されることを期待しています。