我有一个数据表,其中第一列包含一个用于检查元素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页中有相同的日志; 如何在整个页面中只有全部选中的元素? 感谢您的帮助。
答案 0 :(得分:0)
如果使用的是客户端处理模式,则可以使用$()
API方法访问其他页面上的元素。
例如:
var dt = $('#Table').DataTable();
console.log(dt.$('#checkbox-id').prop('checked'));
如果您使用服务器端处理模式(如Sigma所述,这并不容易,因为DOM中不存在来自其他页面的数据。
jQuery DataTables Checkboxes支持server-side processing mode,请查看是否要在项目中使用它。