继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

多个jquery.datatable共存

慕娘5729972
关注TA
已关注
手记 240
粉丝 133
获赞 772

【问题原因】

这个应该是 jquery.datatable 控件本身的一个缺陷。该控件中的checkbox小插件的 id是写死的,所以当 有多个datatable 引用到一个页面中的时候,全选事件会匹配全部的datatable ,所以造成全部多个表格的 checkbox被都被选中。

【解决方法】

所以最好是修改jquery.datatable控件,给生成的每个datatable下的checkbox赋 予不同的id,因为datatable的id是不一样的,所以可以把 datatable的id作为 checkbox的前缀组成一个唯一的id 。  具体这个checkbox的调用事件也需要同步 替换成这个新id,进行事件的调用。

[修改文件]

jqurey.datatable.ext.js (v0.0.1)
unity3d下载 http://www.unitymanual.com/

1. init方法修改:
代码如下:

$("#"+options.select_table).find('thead tr th:first-child')
        .prepend('<input type="checkbox" value="CHK_ALL" id=“chk_all" />');

==>

$("#"+options.select_table).find('thead tr th:first-child')
        .prepend('<input type="checkbox" value="CHK_ALL" id="'+options.select_table+'_chk_all" />');

2.subscribeAllChk方法修改:
代码如下:

$("#chk_all").click(function(){

==>

$("#"+$.fn.datatable_ext.defaults.select_table+"_chk_all").click(function(){

3.subscribeChk方法修改:
代码如下:

if(checked_chk_num == curr_page_chk_num){
     $("#chk_all").attr('checked', 'checked');
    }else{
     $("#chk_all").removeAttr('checked');
    }



==>

if(checked_chk_num == curr_page_chk_num){
     $("#"+$.fn.datatable_ext.defaults.select_table+"_chk_all").attr('checked', 'checked');
    }else{
     $("#"+$.fn.datatable_ext.defaults.select_table+"_chk_all").removeAttr('checked');
    }

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP