【问题标题】:jQuery DataTables - Cannot click element that is not visiblejQuery DataTables - 无法单击不可见的元素
【发布时间】:2013-12-31 11:04:49
【问题描述】:

我有一个 DataTable 和表中的每一行作为包含一个复选框的列,以便可以选择/取消选择项目。我现在要添加的是一个全选/取消全选按钮。

我正在使用以下代码来选择表格中的所有元素:

var all_rows = table.fnGetData();
var all_nodes = table.fnGetNodes();

for (var i=0;i<all_nodes.length;i++)
{
    current_data = all_rows[i];
    element_data = jQuery(current_data[4]).find('.include_element_data:first').val();

    if(element_data == '1') {
        $(all_nodes[i]).children('td:eq(4)').find('.tick_box:first').click();
    }
}

上面的代码有效,但只适用于可见的行。因此,就我而言,仅在前 10 行中,我才能以编程方式单击复选框。一旦代码尝试单击第 11 行的复选框,我将收到以下异常:

Uncaught TypeError: Cannot read property 'aoData' of null

必须注意的是,我使用的表不是在页面加载时加载的,而是通过 JavaScript 代码加载的,因为它是连续的子表,不确定这是否会改变任何内容。

提前致谢

【问题讨论】:

    标签: jquery datatables jquery-click-event


    【解决方案1】:

    尝试为表中的所有复选框设置一个通用类(例如 tdcheck)。并在header checkbox的click事件中添加如下代码

    $("#headercheck").live("click",function(){
         $(".tdcheck").attr("checked",this.checked);
    });
    

    检查下面的小提琴

    http://jsfiddle.net/8YWXP/

    我也试过你提到的方法,但它导致了一些错误。所以我最终选择了手动解决方案。只有可见的行会被选中/取消选中。

    【讨论】:

    • 感谢您的回答,但问题是我需要将复选框逐字“单击”,而不仅仅是将其检查状态更改为“已检查”。正如我所说,代码确实有效,但它根本不适用于不可见的行。
    猜你喜欢
    • 2016-10-15
    • 2017-10-15
    • 1970-01-01
    • 1970-01-01
    • 2012-05-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    相关资源
    最近更新 更多