如何取消选中具有分页功能的tablesorter中的所有复选框

时间:2012-08-08 21:45:04

标签: javascript jquery tablesorter

我被这个折磨了很长一段时间。

由于表格分类器分页将完全删除表中不可见的行,以便更快地进行排序。我无法让每行中的复选框按照我的意愿工作。

这是我的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。

任何人都可以帮助我,我将不胜感激!

2 个答案:

答案 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/