如何缩短这些重复的jQuery插件参数?

时间:2010-08-28 12:22:39

标签: jquery parameters datatable

我正在使用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 ...}存储参数,但会创建一个子对象。也许有一种方法可以“合并”对象内联或其他东西?

2 个答案:

答案 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'
    });
};