为啥单击事件处理程序仅适用于第一页

Posted

技术标签:

【中文标题】为啥单击事件处理程序仅适用于第一页【英文标题】:Why click event handler works on the first page only为什么单击事件处理程序仅适用于第一页 【发布时间】:2014-06-02 21:17:06 【问题描述】:

在我的"fnInitComplete" : function(oSettings, json) 中,我有一个像$('[id^=f_]').each(function () 这样的选择器。

Datatables 获取其数据服务器端和"bProcessing":true

我知道我的选择器只能在我的数据表的第一个页面上工作,当我更改页面时,我的功能将无法工作.

但是,即使使用 ajax 异步加载,有什么解决方案可以使这项工作正常进行。我不想放弃ajax。

一个例子:

"fnInitComplete" : function(oSettings, json) 
$('[id^=r_]').each(function () 
    $(this).click(function(e) 
        alert('Foo');
        e.preventDefault();
    )
);

仅适用于第一个加载的行数据表。有什么建议吗?

【问题讨论】:

【参考方案1】:

使用 on() 将操作绑定到绑定完成后可能不在 DOM 上的元素。

"fnInitComplete" : function(oSettings, json) 
    $(document).on('click', '[id^=r_]', function () 
        alert('Foo');
        e.preventDefault();
    )

【讨论】:

以上是关于为啥单击事件处理程序仅适用于第一页的主要内容,如果未能解决你的问题,请参考以下文章

复选框(Icheck)限制不适用于数据表中的其他页面,仅适用于第一页

数据表工具提示在第二页中不起作用。仅适用于第一页

点击事件仅适用于第二次点击

复选框仅适用于第一页 - 数据表、导轨

可点击的行仅适用于数据表的第一页

为啥单击事件处理程序会在页面加载后立即触发?