根据类指定数据类型

时间:2013-06-24 16:34:35

标签: jquery datatables

我正在使用一个模板,它具有很好的功能,所有带有class =“datatable”的表都会变成jQuery数据表:

$(".datatable").dataTable();

现在,我一直在表中放置不同类型的数据,并注意到money和percentage列被排序为文本,而不是数字。我添加了用于分类的插件作为金钱和百分比(see here),但它们没有得到应用 - 我怀疑因为在初始化表时,我仍然需要设置这些列的sType。

我想做类似于asked here的事情 - 也就是说,在标签中指定我需要覆盖的少数列的sType。但是,由于我使用类而不是ID来应用函数,如何根据类的特定实例修改所提出的扫描sType属性的解决方案?

$(".datatable").each(function() {
    var aoColumns = [];
    $(this).children("th").each(function() {
        var sType = $(this).getAttribute("data-sType");
        aoColumns.push(sType ? { "sType" : sType } : null);
    });
    //$(this).dataTable();
    $(this).dataTable(
            {
                "aoColumns" : aoColumns
            }
        );
});

我遇到的问题是,当我使用aoColumns选项运行时,我不断收到错误Cannot read property 'asSorting' of undefined,但如果我在没有选项的情况下运行它,它就会起作用(减去排序功能)。

1 个答案:

答案 0 :(得分:1)

以下是对此问题的尝试:

http://jsbin.com/ewinep/1
在“价格”列中排序以查看其实际效果。

http://jsbin.com/ewinep/1/edit
问题的核心在下面的javascript中创建数据表。

$(".some-table").each(function(i, v) {
    var aoColumns = []; 
    $(this).find("thead th").each(function() {
      var sType = $(this).data("stype"); // lowercase!
         aoColumns.push(sType ? { "sType" : sType } : null);
    });
   $(this).dataTable({ "aoColumns": aoColumns }); 
}); 

请注意,我为每个表更改了.datatable的类名称.some-table(并没有任何区别 - 只是厌倦了看到css类名称和相同的javascript函数名称)。

顺便说一句,您是否尝试在$(this).children("th").each(function() {下面执行console.log() 查看任何代码是否在嵌套的.each

中执行