【问题标题】:jquery datatables fnGetNodes doesn't work properlyjquery 数据表 fnGetNodes 无法正常工作
【发布时间】:2014-01-14 15:31:25
【问题描述】:

我正在使用 jQuery DataTables,并且我有一个数据表,每行的第一列都有一个复选框,这意味着它就像一个 checkboxColumn。然后,我想获取所有选中的行,但“fnGetNodes”函数不会返回所有行,它只返回可见行。 数据表反映用户滚动(公司访问、区域访问、部门访问等),当我打开一个对话框来修改其中一个(例如:区域访问)和选择 IT,我关闭对话框并返回有问题的数据表(用户滚动表)。当我尝试获取所有选中的卷时(以防我删除了另一个),fnGetNodes 只返回可见行,而不是所有行。 这是代码行:

data = [];    
$($('table', "div#example").dataTable({ bRetrieve: true }).fnGetNodes()).find(":checkbox:checked").each(function (i, o) {
      data.push($(o).val());
});

任何建议将不胜感激。

【问题讨论】:

  • 为什么会有不可见的行?
  • 因为我正在使用分页和过滤器,并且根据 datatables.net , fnGetNodes() 必须返回所有行或数据(fnGetData)。
  • 你到底想在这里实现什么?我的意思是复选框
  • 获取所有选中的复选框
  • 从而得到其各自的值

标签: javascript jquery jquery-datatables


【解决方案1】:

好的,这就是我所拥有的,我认为这很整洁。

其中.cb 是分配给所有复选框的类。

$('body').on('click', 'table tr .cb', function(){
    var value = $(this).val(),
        isChecked = $(this).is(':checked'),
        index = arr.indexOf(value);

    if (isChecked && index === -1) { // add to array if it doesn't exist in there already
        arr.push(value);
    } else if (!isChecked && index !== -1){ // if value exists in array and checkbox in unchecked, remove it from the array
        arr.splice(index, 1);
    }
});

DEMO

【讨论】:

  • 对不起,这不是我想要的。问题是如果我无法获得所有行,我就无法获得所有复选框
  • 那为什么不像$('body').find('table tr')那样选择表格行
  • 因为只占用可见行。请记住,jQuery 数据表不会隐藏行,它会删除它们。
  • 是的。唯一的另一种方法是在创建表时获取复选框,前提是预先选择了复选框。
  • 是的,但是如果再松开范围,那又是一场灾难
猜你喜欢
  • 1970-01-01
  • 2017-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-18
  • 2015-11-13
相关资源
最近更新 更多