我已经为数据表编写了内置的列过滤插件,并且遇到了小麻烦,
我已经在每个页脚中创建了文本输入,现在-在键盘上,我想捕获它们的索引,然后在过滤时使用它。
我通过以下代码获取父列索引:
var visIdx = $(this).parent().index();
仅当所有列可见时,它才返回正确的索引,但是当其中之一被隐藏时,随后的列将返回错误的索引。
这会导致当某些列被隐藏时,过滤将应用于错误的列
小提琴上有我的完整代码:http://live.datatables.net/pulewemu/3/edit?js,console,output
答案 0 :(得分:1)
问题是DataTable正在每个draw()
上创建新元素。您看到的不是带有一些隐藏列的“原始”表,而是一组全新的元素,仅包含“可见”列。
因此无法从那里获取“绝对”索引。
我建议在定义搜索输入的.each()
循环的数据属性中添加该索引:
$('#example tfoot th').each(function(i) {
var title = $(this).text();
var hate = '<input size="4" class="fder" type="text" id="gte" placeholder="min" data-index="'+i+'" />'
hate += '<br><input size="4" class="fder" type="text" id="lov" placeholder="max" data-index="'+i+'" />'
$(this).html(hate);
});
然后在keyup
上检索索引,如下所示:
var visIdx = $(this).data("index");