2010-08-28 41 views
2

我正在使用DataTables jQuery插件。我希望我的表,但工作方式意味着我路过很多的参数插件关闭的事情:如何缩短这些重复的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 ...}存储一个参数,但是它创建了一个子对象。也许有一种方法来“合并”内联对象或其他东西?

回答

2

如果你这样做的时候,你可以添加自己的jQuery plugin

jQuery.fn.myDataTable = function(aoColumns) { 
    return this.dataTable({ 
     'aoColumns': aoColumns, 
     'bPaginate': false, 
     'bAutoWidth': false, 
     'bInfo': false, 
     'bProcessing': true, 
     'asStripClasses': [], 
     'sDom': 'rt' 
    }); 
}; 
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