我正在使用DataTables jQuery插件。我希望我的表工作的方式虽然意味着我将大量参数传递给插件以关闭事物:
$('table.data').dataTable( {
'aoColumns': [
null,
{ 'bSortable': false },
{ 'bSortable': false },
{ 'asSorting': ['desc','asc'], 'sType': 'blanks' },
{ 'asSorting': ['desc','asc'] }
],
'bPaginate': false,
'bAutoWidth': false,
'bInfo': false,
'bProcessing': true,
'asStripClasses': [],
'sDom': 'rt'
} );
在不同的页面中,aoColumns
参数将根据表格更改,但其他参数保持不变。保存我一遍又一遍地重复代码的最佳方法是什么(如果我稍后改变对参数的想法,会更容易)?
我尝试使用{'bPaginate': false ...}
存储参数,但会创建一个子对象。也许有一种方法可以“合并”对象内联或其他东西?
答案 0 :(得分:2)
将重复使用的值放在变量中:
var reused = {
'bPaginate': false,'bAutoWidth': false,
'bInfo': false,
'bProcessing': true,
'asStripClasses': [],
'sDom': 'rt'
}
然后使用$.extend
合并唯一数据:
$('table.data').dataTable(
$.extend(
{}, // Empty target that is extended and passed to dataTable
reused, // Extend with the stored reused data
{'aoColumns': [ // Extend with an object containing the unique propertie(s)
null,
{ 'bSortable': false },
{ 'bSortable': false },
{ 'asSorting': ['desc','asc'], 'sType': 'blanks' },
{ 'asSorting': ['desc','asc'] }
]
}
)
);
编辑:我的一个关闭者是}
而不是)
。固定的。
请注意,如果您要覆盖其中一个reused
属性,则可以在$.extend()
变量之后的任何位置向reused
添加另一个对象。这不会影响reused
中存储的项目。
$.extend(
{},
reused,
{'bInfo': true}, // override one of the properties in "reused"
{aoColumns:// ...etc
答案 1 :(得分:2)
如果您经常这样做,可以添加自己的jQuery plugin:
jQuery.fn.myDataTable = function(aoColumns) {
return this.dataTable({
'aoColumns': aoColumns,
'bPaginate': false,
'bAutoWidth': false,
'bInfo': false,
'bProcessing': true,
'asStripClasses': [],
'sDom': 'rt'
});
};