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