我有代码来检查数据表中ajax响应的数据,这里是:
kpi_id = jsonData.kpi_id;
var table_kpi_list = $('#kpi_list').DataTable();
$.each(kpi_id.split(","), function(i,e){
table_kpi_list.column(1,{ search:'applied' } ).data().each(function(value, index) {
if(value === e)
{
var rows = table_kpi_list.rows({ 'search': 'applied' }).nodes();
$('input[type="checkbox"]', rows[index]).prop('checked', "checked");
}
});
});
我没有任何值(value)(尝试使用console.log
),然后我尝试对其进行警报,并且它检查了(显示所有值)。但是当我删除警报时,没有检查任何行。
为什么以及如何解决它?谢谢
最佳答案
我通过警报语句猜测我认为 DOM 有足够的时间来完全渲染。因此,您的 $(input[type...)
代码行得到正确执行。我建议您将 setTimeout()
放在 $(input[type...)
代码周围,延迟 200 毫秒,然后看看代码是否正常工作。您的代码可以更改如下:
kpi_id = jsonData.kpi_id;
var table_kpi_list = $('#kpi_list').DataTable();
$.each(kpi_id.split(","), function(i,e){
table_kpi_list.column(1,{ search:'applied' } ).data().each(function(value, index) {
if(value === e)
{
var rows = table_kpi_list.rows({ 'search': 'applied' }).nodes();
setTimeout(function(){
$('input[type="checkbox"]', rows[index]).prop('checked', "checked");
},200);
}
});
});
关于javascript - 设置检查的数据表 jquery 循环不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37650914/