私はすべてのユーザーを含むテーブルを開発しています。テーブルの行をクリックして、クリックが実行されると開くフォームでデータを編集することによっても変更できます。
ページの読み込み時にすべてのユーザーを読み込んでいる場合、コードは正常に機能します。
データテーブルの初期化時にユーザーをロードするようにデータテーブルを変更すると、最初のページでのみ機能します。
下部のコメントを外してready(function())
削除するfnInitComplete
と、最初のページでも機能しません。
これが私のコードの関連部分です:
$(document).ready(function(){
tbl = $('#nutzer').dataTable( {
"bJQueryUI": true,
"sScrollX": "100%",
"bProcessing": true,
"bServerSide": true,
"iDisplayLength": 10,
"sAjaxSource": "xhr.php",
"sPaginationType": "full_numbers",
"fnInitComplete": function() {
$('#nutzer tbody tr').on("click", function () {
aufklappen(this);
} );
}
} );
$( "#create-user" ).button().click(function() {
$( "#dialog-form" ).dialog( "open" );
});
// $('#nutzer tbody tr').on("click", function () {
// aufklappen(this);
// } );
});
function aufklappen(row) {
if ( tbl.fnIsOpen(row) ) {
tbl.fnClose(row);
} else {
set = tbl.fnSettings().aoOpenRows[0];
(set != null) ? (tbl.fnClose(set.nParent)) : null;
$.post("benutzerBearbeiten.php", {
funktion : "benutzerDaten",
id : $(row).children( "td:first-child" ).text()
}, function(data){
tbl.fnOpen( row, data);
$( "#deaktivieren").button().click(function(e){
e.preventDefault();
deaktivieren();
});
$( "#speichern").button().click(function(e){
e.preventDefault();
speichern();
});
}
) };
}
datatablesページネーションを介したページの読み込みまたはページの変更後、手動で呼び出すことができます
$('#nutzer tbody tr').on('click', function () {
aufklappen(this);
} );
クリック関数はtrに完全にバインドされます。
datatables-pluginによって作成された要素は、私が定義したon()ハンドラーに到達していないようですが、その理由はわかりません。
編集
「システム再起動」の回答を利用して、fnInitComplete
パーツを削除して追加することになりました
"asStripeClasses": [ "odd nutzer_tr", "even nutzer_tr"]
初期化部分に
$("body").delegate(".nutzer_tr", "click", function () {
aufklappen(this);
});
にready(function())
。追加のクラスnutzer_tr
は、開いたテーブル行が閉じないようにすることです。