0
私は管理者がその情報を編集できるようにするユーザーのdataTableを持っています。しかし、問題は、jquery関数をデータテーブルの特定のセルにバインドするには、データテーブル初期化のfnDrawCallbackまたはfnInitCompleteオプションのいずれかに関数をリストすることです。ただし、ユーザーが行を更新し、fnReloadAjaxが実行されると(新しい変更を表示するために)、表のセルにバインドされたすべてのJQueryは使用できなくなります。 私はすべてのJQueryコードをfnDrawCallbackとfnInitCompleteの両方に配置しようとしましたが、どちらも同じ結果を持っています。 アイデアJQuery DataTables - fnReloadAjax()fnDrawCallbackまたはfnInitCompleteをリロードする方法
var oTable = $('.admin_users').dataTable({
"bProcessing": true,
"sAjaxSource": 'sql/admin_users.php',
"aaSorting": [[ 1, "asc" ]],
"bJQueryUI": true,
"sPaginationType": "full_numbers",
"bStateSave": true, //Use a cookie to save current display of items
"aoColumns": [
{"asSorting": [ ]},
null,
null,
null,
{ "sType": "date", "sClass":"center" }
],
"fnDrawCallback": function(){
//Edit row
$('.button_edit').click(function(){
$(':input[type="text"]').val('');
$(':input[type="checkbox"]').removeAttr('checked');
$('.admin_edit_button.button_update').attr('id',$(this).attr('id'));
$('.admin_edit_user').slideDown();
var userid = $(this).attr('id');
//GET USER INFO
$.ajax({
url: 'sql/admin_edit',
type: 'POST',
dataType: 'json',
data: 'getinfo=true&userid='+userid,
success: function(data){
//FILL IN INPUTS WITH USER VALUES
}
});
//UPDATE CHANGES
$('.admin_edit_button.button_update').click(function(){
//GET NEW/UNCHANGED VALUES
$.ajax({
url: 'sql/admin_edit.php',
type: 'POST',
async: false,
data: //SEND DATA HERE,
success: function(response){
if(response=='true'){
$(':input[type="text"]').val('');
$(':input[type="checkbox"]').removeAttr('checked');
$('.admin_edit_user').slideToggle(function(){oTable.fnReloadAjax()});
alert("Success!");
}
if(response=='false')
alert('Failed to update user');
},
error: function(response){
alert('Failed to update user');
}
});
});
});
$('.button_cancel').click(function(){
$('.admin_edit_user').slideUp();
$(':input[type="text"]').val('');
$(':input[type="checkbox"]').removeAttr('checked');
});
},
"bScrollCollapse": true,
"sScrollX": "100%",
"fnInitComplete": function() {
oTable.fnAdjustColumnSizing();
}
});