未捕获的TypeError:无法读取未定义的属性'nTr'

时间:2015-06-01 16:12:59

标签: javascript jquery datatables

问题在于,当我致电 fnSelect 时,我在Chrome上遇到错误:

Uncaught TypeError: Cannot read property 'nTr' of undefined

这是我的代码:

$('#ToolTables_table_id_0, #ToolTables_table_id_1').mousedown(function(){
                var oTT = TableTools.fnGetInstance('table_id');
                var rowsToBeExported = $('#table_id tbody tr:visible');
                var visibileSelectedRows = $("#table_id tbody tr input[checked='checked']");
                if(visibileSelectedRows.size() > 0 ){
                    console.log(visibileSelectedRows);
                    console.log(rowsToBeExported);
                    oTT.fnSelect(visibileSelectedRows);
                }else{
                    $('input', rowsToBeExported).attr('checked','checked');
                }

                console.log(rowsToBeExported.size() + " row(s) will be exported.");
                oTT.fnSelect(rowsToBeExported);
            });

触发错误
oTT.fnSelect(visibileSelectedRows);

而行

oTT.fnSelect(rowsToBeExported);

我有11列,最后一列被css代码隐藏(显示:无)

请问有什么解释吗?

1 个答案:

答案 0 :(得分:2)

这是因为您将复选框元素传递给fnSelect中的oTT.fnSelect(visibileSelectedRows)

$("#table_id tbody tr input[checked='checked']")将为您提供复选框元素。您需要找到其父tr并将其传递给fnSelect。试试这个。

$('#ToolTables_table_id_0, #ToolTables_table_id_1').mousedown(function(){
                var oTT = TableTools.fnGetInstance('table_id');
                var rowsToBeExported = $('#table_id tbody tr:visible');
                var visibileSelectedRows = $("#table_id tbody tr input[checked='checked']");
                if(visibileSelectedRows.size() > 0 ){
                    console.log(visibileSelectedRows);
                    console.log(rowsToBeExported);
                    oTT.fnSelect(visibileSelectedRows.closest('tr'));
                }else{
                    $('input', rowsToBeExported).attr('checked','checked');
                }

                console.log(rowsToBeExported.size() + " row(s) will be exported.");
                oTT.fnSelect(rowsToBeExported);
            });