私の答えは@Chris Everittの回答と似ていますが、若干の違いがあります。それを見たい人のためだけに..ここに行く..テーブル内のすべてのimg(DOMのattrの)イベントを登録
var oTable = $('#masterTable').dataTable({
"aLengthMenu": [[5,10, 25, 50, 100 , -1], [5,10, 25, 50, 100, "All"]],
"iDisplayLength" : 10,
"aoColumnDefs": [
{"sWidth": "25%", "aTargets": [ 0 ] },
{"sWidth": "10%", "aTargets": [ 1 ] },
{"sWidth": "10%", "aTargets": [ 2 ] },
{"sWidth": "10%", "aTargets": [ 3 ] },
{"sWidth": "10%", "aTargets": [ 4 ] },
{"sWidth": "10%", "aTargets": [ 5 ] },
{"sWidth": "15%", "aTargets": [ 6 ] },
{"sClass": "align-left" , "aTargets": [ 0,1,4, 2,3,5,6] }
],
"aoColumns": [
{ "bSortable": true },
null, null, null,null, null,
{ "bSortable": true }
]
});
-
oTable.$('td').each(function() {
$(this).on('click','img', function() {
var nTr = $(this).parents('tr')[0];
if (oTable.fnIsOpen(nTr))
{
/* This row is already open - close it */
this.src = "${pageContext.request.contextPath}/theme/v_1_0/app-images/details_open.png";
oTable.fnClose(nTr);
}
else
{
/* Open this row */
this.src = "${pageContext.request.contextPath}/theme/v_1_0/app-images/details_close.png";
var html = '<div> Placeholder here.. </div>';
oTable.fnOpen(nTr, html, 'details');
}
});
私の推測が間違っていました。もう1つの前提条件: 'ajaxComplete'のバインディングはすべての行にバインドされ、DataTableは賢明であり、必要になるまでブラウザー内のすべての行をレンダリングしないので無効です。したがって、Konの 'live()'の答えは正しいです。 –
Chris Everittが提供する答えを見てください。それは組み込みのDataTables関数を使用し、非推奨のjquery関数を使用しません。 – Nullius