从JQuery Datatable标头中读取复选框值

时间:2014-03-12 07:22:31

标签: checkbox header jquery-datatables

我正在动态创建一个HTML表格,并且在表格标题列中我有复选框和文本。在初始加载时会检查一些复选框,而不检查一些复选框。之后我在我的HTML表上应用datatable插件。但是,当我检查或取消选中标题中的某些复选框并尝试读取新值时,我始终会在复选框创建时获得原始值。

以下是我如何阅读列复选框值

var columns = $('#myTable').dataTable().dataTableSettings[0].aoColumns;
$.each(columns, function (i, v) {
    var object = jQuery.parseHTML(v.sTitle);//innerHTML of input type='checkbox'
    if (object != null) {
        chkbox = object[0]; //object[1] is Text
        isChecked=chkbox.checked;
    }
});

修改 我的HTML用于初始加载时选中和未选中的复选框

对于选中的复选框

<input style='margin-right:5px' onclick=EnableDisableColumn(this); id='" + id+ "'     **checked='checked'** type='checkbox' Value='" + value + "' name='" + name+ "' />"  

对于Un -hecked Check Box

<input style='margin-right:5px' onclick=EnableDisableColumn(this); id='" + id+ "'      type='checkbox' Value='" + value + "' name='" + name+ "' />"

1 个答案:

答案 0 :(得分:1)

dataTables不响应DOM中的更改,并在选中复选框时神奇地更新其内部变量。 dataTables在任何情况下都返回<th>的内容,就像初始化表时一样。从dataTables的角度来看,<th>的内容只是纯文本的一部分。

为什么要绕过dataTables呢?标题和复选框可以像往常一样在javascript或jQuery中完全访问,我们没有dataTables。

这是一个例子 - &gt;的 http://jsfiddle.net/XTpKH/

var dataTable = $('#example').dataTable();

$('th').click(function() {
    var msg = 'this header checkbox is ';
    msg += $(this).find('input[type="checkbox"]').is(':checked') ? ' ' : 'not ';
    msg +='checked'
    alert(msg);
});