動的テーブルを作成しようとしています。このテーブルでは、行がクリックされるとすぐに別のテーブルに詳細情報が表示されます。
これは、1年前に作成したjQueryライブメソッドを使用したコードに基づいて行っています。現在、このメソッドは存在せず、onメソッドに切り替えました。
ここで問題となるのは、このコードが実際にDatatableの作成をトリガーする一方で、行のクリックイベントをバインドしないことです。クリックしても何も起こりません。
これは責任のあるJavascriptコードです:
<script type="text/javascript">
$(document).ready(function() {
$("#overview").dataTable({
aoColumnDefs:[{
sWidth: "20px",
aTargets: [0]
}],
bLengthChange: false,
oLanguage: {
sProcessing: "Bitte warten...",
sLengthMenu: "_MENU_ Einträge anzeigen",
sZeroRecords: "Keine Einträge vorhanden.",
sInfo: "_START_ bis _END_ von _TOTAL_ Einträgen",
sInfoEmpty: "0 bis 0 von 0 Einträgen",
sInfoFiltered: "(gefiltert von _MAX_ Einträgen)",
sInfoPostFix: "",
sSearch: "Suchen",
oPaginate: {
sFirst: "Erster",
sPrevious: "Zurück",
sNext: "Nächster",
sLast: "Letzter"
}
},
iDisplayLength: 10,
sAjaxSource: "<%=ivy.html.startref("API/WebAPI/antraege.ivp")%>?asUid=<%=ivy.html.get("in.asUid")%>"
});
$(".dataset").on("click", function() {
antragid = this.id;
$.ajax({
url: "<%=ivy.html.startref("API/WebAPI/antrag.ivp")%>",
dataType: "json",
contentType: "application/json; charset=utf-8",
data: {
id: antragid
},
success: function(data) {
for (var key in data) {
$('#'+key).html(data[key]);
}
}
})
})
})
</script>
これをテンプレートで動作するワークフローツールで使用しているため、このコードをヘッダーに入れることができません(そうしないと、このテンプレートを使用するすべてのページに読み込まれます)。それをbodyタグに入れてください。これがこの問題に影響を与える可能性があるかどうかはわかりません。
ここで、奇妙な部分があります。上記のコードをコピーしてChrome JSコンソールで実行すると、イベントバインディングが作成されるため、詳細が他のテーブルに配置されます。
私は何か間違ったことをしていますか?liveメソッドを使用するアプリケーションは引き続き問題なく動作します。
ありがとう