你可以看到下面的代码附加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