我被这个折磨了很长一段时间。
由于表格分类器分页将完全删除表中不可见的行,以便更快地进行排序。我无法让每行中的复选框按照我的意愿工作。
这是我的jsfiddle - > http://jsfiddle.net/NcqfY/3/
点击变量触发器以显示表格
基本上我想要做的是获取所有选定行的id并将它们推送到数组selectedID
。创建报告时(或单击“创建报告”按钮),清空selectedID
数组。所以在我点击按钮后,我希望表中的所有复选框都应该取消选中。我使用以下代码:
$('table.tablesorter tbody tr').find('input[type=checkbox]').prop('checked', false);
// I can only uncheck the boxes in current page
但是我只能取消选中当前页面中的框,而不包括不可见的页面。这真的让我很难获得所选行的正确ID。
任何人都可以帮助我,我将不胜感激!
答案 0 :(得分:1)
您的部分javascript中出现了一些错误:
$('table.tablesorter tbody').on("click", "tr", function(event) {
if (event.target.type != 'checkbox') {
$(':checkbox', this).trigger('click');
var id = $(this).attr('id');
if (selectedID.indexOf(id) == -1) {
selectedID.push(id);
} else {
var index = selectedID.indexOf(id);
selectedID.splice(index, 1);
}
}
});
我为你纠正了它们,似乎工作正常:
!==
- > !=
===
- > ==
var id = $(this).attr('id')
- > var id = $(this).attr('id');
编辑:上面的内容对我不起作用,所以我认为这是问题所在,但要回答你的问题:
$($(".tablesorter")[0].config.rowsCopy).each(function() {
$(this).find('input[type=checkbox]').prop('checked', false);
});
这将取消检查表格中的所有复选框,即使是隐藏的复选框
答案 1 :(得分:1)
根据the documentation of tablesort's pager,你可以这样做:
var t = $('table')
// disabling the pager will restore all table rows
t.trigger('disable.pager');
// ---do your thing---
// restore pager
t.trigger('enable.pager');
这似乎有效,因为你没有省略寻呼机的大小选择器(如果这样做,它会抛出错误)。
我已更新您的JSFiddle:jsfiddle.net/NcqfY/6/