0

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

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

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

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

4

2 回答 2

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);
});

这将取消选中表格中的所有复选框,甚至是隐藏的复选框

于 2012-08-08T22:08:23.530 回答
1

根据tablesort 的 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/

于 2012-08-08T22:18:47.643 回答