如何从JQuery DataTable获取包含已选中复选框的行

时间:2014-02-27 12:32:38

标签: jquery datatables

我需要从Jquery Datatables的隐藏列中获取已选中复选框的值(在第一个可见列中)。到目前为止我已经

bodytable$ = $('#dataTable').dataTable({
    "bJQueryUI" : true,
    "bPaginate" : true,

    "bSort" : false,
    "bFilter": false,       
    "aoColumns": [{"bVisible": false},
                  {"bVisible": true},
                  {"bVisible": true},
                  {"bVisible": true}],

    "oLanguage": {
        "sEmptyTable": '',
        "sInfoEmpty": '',
        "sZeroRecords": ''
    }
});

我正在使用

从隐藏列中获取值
    var checkIds = [];

    $('input[type="checkbox"]:checked', bodytable$.fnGetNodes()).each(function(i){
        var tr = $(this).closest('tr');
        var rowData = bodytable$.fnGetData(tr);
        checkIds.push(rowData[0]);
    });
    alert(checkIds);

这就失败了     var rowData = bodytable $ .fnGetData(tr); 使用Firefox调试给出错误消息TypeError:a.nodeName未定义

我必须通过DataTable API,因为隐藏列实际上并没有出现在加载到浏览器中的html中,因为我希望能够在所选复选框不相同时选择数据值页。

继续mainguys响应,并使用CSS隐藏列而不是bVisible属性,我现在可以得到我想要的东西;

    var checkIds = [];
    $('input[type="checkbox"]:checked', bodytable$.fnGetNodes()).each(function(i){
        var tr = $(this).closest('tr');
        checkIds.push($(tr).find('td:eq(0)').text());
    });
    alert(checkIds);

1 个答案:

答案 0 :(得分:5)

找到了一个如何做到这一点的技巧。

不要隐藏collumn,只需为其分配一个display:none的类。

"aoColumns": [{
  "bVisible": true
}, {
  "bVisible": true, sClass:"hideme"
}, {
  "bVisible": true
}]

CSS:

.hideme {
  display:none;
}

现在找到它们:

   var checkIds = [];
    bodytable$.$('tr').each(function(index,rowhtml){
      var checked= $('input[type="checkbox"]:checked',rowhtml).length;
      if (checked==1){
        checkIds.push($('.hideme',rowhtml).text());
      }
    });
    alert(checkIds);

是的,我知道这不是很优雅,但它确实有效。 Try it here