你可以看到下面的代碼附加click
處理到tbody
實行行選擇功能實際DataTable對象是inited前:
$("#example tbody").click(function(event) {
$(oTable.fnSettings().aoData).each(function(){
$(this.nTr).removeClass('row_selected');
});
$(event.target.parentNode).addClass('row_selected');
});
/* Init the table */
oTable = $('#example').dataTable();
由於我需要此功能爲我的項目中的所有數據表,我希望這些代碼在每個數據表對象初始化時自動運行。
我已發現,其中這些代碼可以被添加的可能的地方here(這是fnInitComplete
事件):
然而,代碼應該缺省運行,而不是像本例中,將它們傳遞給fnInitComplete
事件在選項對象中。
您認爲這可以做什麼?
非常感謝大家。
編輯:
最終,我決定來定義一個全局表的選擇對象,我會克隆,並在必要時修改它用它來初始化這樣的數據表前:
//default table options defined globally, you can namespace it if you like
var jqDataTablesDefaultOptions:{
"fnDrawCallback": function (oSettings, json) {
var nTrs = this.fnGetNodes();
$(nTrs).click(
function(){
$(nTrs).removeClass('row_selected');
$(this).addClass('row_selected');
}
);
},
"aLengthMenu": [5,10,15,20,100],
"iDisplayLength":5,
"oLanguage": {
"sUrl": "/assets/lib/DataTables-1.8.2/media/language/zh_TW.txt"
},
"bJQueryUI": true
"sPaginationType":"full_numbers"
};
在每一個我使用的數據表頁,我將有以下代碼:
//copy the default options
var tableOptions=$.extend(true,{},jqDataTablesDefaultOptions);
//modify the options if necessary
tableOptions.iDisplayLength=10;
//init the datatable
$('#example').dataTable(tableOptions);
請隨意閱讀本page因爲我使用fnDrawCallback
而不是fnInitComplete
。
它看起來像你可能做的唯一的事情是「猴子補丁」一個內置的DataTables初始化函數也可以調用你自己的自定義代碼,或者至少合併到你的自定義默認選項中。除非有其他方法可以爲我在文檔中沒有看到的DataTables設置默認選項? – GregL