更新现有jQuery对象的选项

时间:2012-12-19 11:01:09

标签: jquery twitter-bootstrap jquery-datatables

我在我的应用程序中使用Bootstrap和DataTables,并且我有一个基于类的表的默认初始化程序。我可以将类数据表添加到表中,并使用我想要的默认值进行实例化。

我想知道如何根据特定的表格更改或更新特定选项。

if ($.fn.dataTable) {
    $('.data-table').dataTable( {
        sDom: "R<'row'<'span6'l><'span6'f>r>t<'row'<'span6'i><'span6'p>>",
        sPaginationType: "bootstrap",
        oLanguage: {
            "sLengthMenu": "_MENU_ &nbsp; records per page"
        },
        aoColumnDefs: [
            { "bSortable": false, "aTargets": [ 0 ] }
        ]
    });
}

我的所有数据表都在第一列中有一个复选框,因此上面的排序删除适用于所有数据。但是我希望能够逐个表地更新aoColumnDefs,这样我就可以添加其他我不想排序的列。

所以假设我有一个表:$('#member-list'),如何在jQuery中访问该对象并更新它的datatables选项?我在任何地方都找不到任何参考或帮助。

2 个答案:

答案 0 :(得分:1)

由于在实例化aoColumnDef对象时只能配置dataTable我决定采用更优雅的方法并使用数据属性和附加功能来设置可排序列。

在我的表格中,我添加了data-sort="0, 4, 8"或我想要排序的任何特定字段。

然后我创建了一个简单的函数来将data属性的字符串值转换为数字数组以传递给aTargets:

function convertData (string) {
   $array = Array();
   if (string) {
      $items = string.split(',');
      $.each($items, function () {
         $array.push(parseInt(this, 10));
      });
   }
   return $array;
}

现在我可以循环浏览每个$('.data-table')并获取data-sort属性,将其传递到convertData()以创建我的数组,然后在创建时将其传递到aTargets dataTable对象。

if ($.fn.dataTable) {
   $('.data-table').each(function() {
      $targets = convertData($(this).data('sort'));
      $(this).dataTable({
         sDom: "R<'row'<'span6'l><'span6'f>r>t<'row'<'span6'i><'span6'p>>",
         sPaginationType: "bootstrap",
         oLanguage: {
            "sLengthMenu": "_MENU_ &nbsp; records per page"
         },
         aoColumnDefs: [
            { "bSortable": false, "aTargets": $targets }
         ]
      });
   });
}

感谢所有试图提供帮助的人: - )

-V

答案 1 :(得分:0)

DataTables 插件有an alias to access the Settings object,即dataTableSettings。我不知道您尝试更改哪些设置(或者即使它们都可以通过此对象写入),但我已经确认可以更改,例如 nth 列的可排序性用:

`$('#member-list').dataTableSettings.aoColumns[n].bSortable = true;`