具有不同ajax源的同一页面上的多个DataTable

dzm*_*dzm 8 ajax jquery jquery-plugins datatables

我在一个页面上使用dataTables有几个表.每个人都需要拥有自己的'AjaxSource'.我似乎无法弄明白该怎么做.这是我的最小代码:

         var oTable = $('.datatable').dataTable( {
                "bProcessing": true,
                "sAjaxSource": "/ajax/function",
                "bSort": false,
                "fnDrawCallback": function() {
                       //some click events initilized here
                 }
            });
Run Code Online (Sandbox Code Playgroud)

这基本上是裸骨设置.每个表作为数据表类和唯一ID.但不确定如何根据特定的表更改AjaxSource.

谢谢!

编辑:

这是我最终做的事情:

        $('.datatable').each(function(index){

             $('#'+$(this).attr('id')).dataTable( {
                "bProcessing": true,
                "sAjaxSource": $(this).children('caption').html(),
                "bSort": false,
                "fnDrawCallback": function() {
                 }
            });
        });
Run Code Online (Sandbox Code Playgroud)

在表格内部,我放置了一个由css隐藏的标题标记,其中包含Ajax源URL.它遍历每个实例并抓取网址.

这似乎到目前为止工作!

Lar*_*tig 5

这不行吗?它使用id而不是类来唯一标识每个数据表,并根据id为每个表附加一个单独的源.

  var oTable = $('#FirstDataTableID').dataTable( {
            "bProcessing": true,
            "sAjaxSource": "/ajax/function",
            "bSort": false,
            "fnDrawCallback": function() {
                   //some click events initilized here
             }
        });

  var oTable = $('#SecondDataTableID').dataTable( {
            "bProcessing": true,
            "sAjaxSource": "/ajax/other_function",
            "bSort": false,
            "fnDrawCallback": function() {
                   //some click events initilized here
             }
        });
Run Code Online (Sandbox Code Playgroud)

  • 好吧,对每个数据表进行单独的初始化是非常棘手的,而不需要为每个数据表进行单独的初始化,这正是您所要求的.您可以尝试基于类进行一次公共初始化,然后使用指定的源属性分离较小的初始化,这样就不会重复公共代码. (2认同)

Eri*_*ong 5

我遇到了同样的问题,我使用类似于你的 html5 数据属性和初始化代码解决了这个问题:

$('.dataTableServer').each(function () {
        var source = $(this).attr("data-source");
        $(this).dataTable({
            "sPaginationType": "full_numbers",
            "bProcessing": true,
            "bServerSide": true,
            "sAjaxSource": source
        });
    });
Run Code Online (Sandbox Code Playgroud)

这样你就不必为每个数据表创建一个 id