dataTable如何从非当前页面获取元素

时间:2018-10-09 13:11:06

标签: javascript jquery html datatables

我有一个数据表,其中第一列包含一个用于检查元素ID的复选框。

<tbody>
  <tr role="row" class="odd">
    <td class="sorting_1">
      <input type="checkbox" value="2025" 
                class="checkElement n30" id="n30">
      <label for="n30">2025</label>
    </td>

  ...

数据表由4页中的33个元素组成(每页10个)

我想过滤数据表中所有已检查元素的ID,其中还包括与当前页面不同的页面中的元素。 不幸的是,当我使用jquery来获取元素属性时,我只能接受当前页面上的元素,并且如果我使用从document元素检查的属性,则它总是返回false,如以下代码所示:

        dt = $('#Table').DataTable();

        info = dt.page.info();
        for(i=0;i<info.pages;i++)
          {
            console.log("pagina ("+(i+1)+"): ");
            pdt = dt.page(i).rows().data();
            pdt.rows().data().each(function(row, index){
               console.log("riga ("+(index+1)+"): ");
               $(row[0]).each(function(pos, elem) {
                  var isSelected = $("#"+elem.id).prop('checked');
                  if(pos == 0)                                                
                    console.log(">> "+elem+": "+elem.checked+" / "+isSelected);
               });
            });
         } // end for
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>

我尝试仅选择每个页面的前两个元素,但是在控制台中结果是:

 pagina (1): 
   riga (1): 
          >> checkbox: false / true
   riga (2): 
          >> checkbox: false / true
 ...
   riga (9): 
          >> checkbox: false / false
   riga (10): 
          >> checkbox: false / false
   riga (11): 
          >> checkbox: false / undefined
   riga (12): 
          >> checkbox: false / undefined
   riga (13): 
          >> checkbox: false / undefined
 ...
   riga (28): 
          >> checkbox: false / undefined
   riga (29): 
          >> checkbox: false / undefined
   riga (30): 
          >> checkbox: false / undefined
   riga (31): 
          >> checkbox: false / undefined
   riga (32): 
          >> checkbox: false / undefined
   riga (33): 
          >> checkbox: false / undefined

在第2、3、4页中有相同的日志; 如何在整个页面中只有全部选中的元素? 感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

如果使用的是客户端处理模式,则可以使用$() API方法访问其他页面上的元素。

例如:

var dt = $('#Table').DataTable();
console.log(dt.$('#checkbox-id').prop('checked'));

如果您使用服务器端处理模式(如Sigma所述,这并不容易,因为DOM中不存在来自其他页面的数据。

jQuery DataTables Checkboxes支持server-side processing mode,请查看是否要在项目中使用它。