【问题标题】:dataTable how to take element from not current pagesdataTable 如何从非当前页面中获取元素
【发布时间】:2018-10-09 13:11:06
【问题描述】:

我有一个数据表,其中第一列包含一个复选框来检查元素的 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 获取元素属性时,我只能获取当前页面上的元素,如果我使用从文档元素中检查的属性,它总是返回 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
&lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"&gt;&lt;/script&gt;

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

 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 页,而第 2-3-4 页上的其他数据不存在,因为它们尚未从 db 中检索.您可以增加每页的结果 nr 以显示例如 50 行并获得所需的结果,或者如果您的表数据不应该很大,您可以使用 DT 的客户端模型,以便从 db 处理和检索所有数据只是为了更好的组织而用分页分开。

标签: javascript jquery html datatables


【解决方案1】:

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

例如:

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

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

jQuery DataTables Checkboxes支持server-side processing mode,看看你是否想在你的项目中使用它。

【讨论】:

    猜你喜欢
    • 2011-06-17
    • 1970-01-01
    • 1970-01-01
    • 2012-11-08
    • 1970-01-01
    • 2011-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多