2011-10-27 23 views
0

在此page使行选择一个内置功能的jQuery数据表

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

+0

它看起来像你可能做的唯一的事情是“猴子补丁”一个内置的DataTables初始化函数也可以调用你自己的自定义代码,或者至少合并到你的自定义默认选项中。除非有其他方法可以为我在文档中没有看到的DataTables设置默认选项? – GregL

回答

1

我会制作我自己的插件并使用jQuery $ .extend函数来扩展您使用默认设置所设置的选项。如果您不想为此制作插件,则可以使用DataTools plugin

另一种选择是编辑DataTable js文件 - 在代码中搜索“classSettings”。但显然这有很大的缺点,如果你想升级到新版本,你必须重新编辑它。

而对于这种东西,我宁愿用fnRowCallback,因为它有表TR厄运元素,您可能绑定任何你想要的事件的说法。但是如果你想使用任何jQuery功能,你必须把它包装到jQuery中。