将更改事件绑定到每个 DataTables 行中的复选框

Posted

技术标签:

【中文标题】将更改事件绑定到每个 DataTables 行中的复选框【英文标题】:Bind change event to checkbox in each DataTables row 【发布时间】:2016-12-18 09:30:03 【问题描述】:

我为DataTables 中的每一行添加了一个复选框。加载表数据时,我将更改事件绑定到每个复选框,如下所示:

fnInitComplete: function(oSettings, json) 

      $("input[type='checkbox']").on("change", function() 

            // checking if any checkbox is checked

      );

问题是只为第一页添加了更改事件。如果我导航到其他页面并单击任何复选框,则不会触发任何事件。它仅在我刷新页面时才有效。 Show entries 也是如此。处理这个问题的聪明方法是什么?

【问题讨论】:

在页面更改时,您必须再次触发该事件,以实现这一目标。或者将此函数放在加载事件上。 【参考方案1】:

尝试使用委托事件:

$("#table_id").on('change',"input[type='checkbox']",function(e)
    //your code 
);

这告诉表在“更改”事件源自作为其后代的input[type='checkbox'] 时运行指定的函数。

顺便说一下,在表格初始化中不需要注册这个handler,文档准备好后就可以了。

More about delegated events

【讨论】:

【参考方案2】:

您可以将您的代码放在这里 .on( 'page.dt', function () // do something) 检查the link 以获取有关此的更多说明,或者您可以使用以下代码放置此事件。

$(function()$("input[type='checkbox']").on("change", function() 

            // checking if any checkbox is checked

      );)

【讨论】:

以上是关于将更改事件绑定到每个 DataTables 行中的复选框的主要内容,如果未能解决你的问题,请参考以下文章

将 DataGrid 行中的 DoubleClick 命令绑定到 VM

Angular `ng-click` 在 DataTables 表行中不起作用

如何在我的进程绑定到的控制台中获取行中的字符数?

如何动态更改 jQuery Datatables 高度

将输入值保存在子行中 - DataTables

Vue:将更改事件绑定到动态插入的内容