我正在使用一个模板,它具有很好的功能,所有带有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
,但如果我在没有选项的情况下运行它,它就会起作用(减去排序功能)。
答案 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
?