2010-08-28 5 views
2

Я использую плагин jQuery 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

Если вы делаете это часто, вы можете добавить свои собственные 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'] } 
      ] 
     } 
    ) 
); 

EDIT: Один из моих доводчики был } вместо ). Исправлена.

Обратите внимание, что если вы хотите переопределить один из ваших reused объектов, вы можете просто добавить еще один объект в $.extend() в любом месте после переменной reused. Это не влияет на элементы, хранящиеся в reused.

$.extend(
     {}, 
     reused, 
     {'bInfo': true}, // override one of the properties in "reused" 
     {aoColumns:// ...etc 
Смежные вопросы