Skip to main content
 首页 » 编程设计

jquery之更新由于分页/排序而隐藏的行

2026年10月07日3softidea

如何对当前由于分页而不在 View 中的行执行 fnUpdate 操作?

我正在开发一个 Web 应用程序,该应用程序在不同的 div 容器中使用两个 DataTable 实例。当一个容器可见时,另一个容器通过 jQuery.fadeOut()/fadeIn()

隐藏

在一个 div 中,我有一个汇总表,其中显示了另一个隐藏容器中可用的数据字段的选择。这些表之间的行通过 _id# 后缀映射到行 ID,例如,汇总表中的行 id 4_performance_3 映射到行 id timeline_task_3 在完整的详细信息表中。

如果行 ID timeline_task_3 由于分页和/或排序而不可见,如果我已将更改应用到 4_performance_3,如何更新该行?

在代码片段中,由于行 ID 通过分页无法查看,element 为 null

var tableArray = timelineTable.fnGetNodes(); 
var elemSplit; 
 
for (var i = 0; i < tableArray.length; i++) { 
    elemSplit = tableArray[i].id.split("_"); 
 
    if (elemSplit[2] == currentTask.id){ 
        element = document.getElementById(tableArray[i].id); 
 
        timelineTable.fnUpdate(currentTask.internal, element, 0, false); 
        timelineTable.fnUpdate(currentTask.dueDate, element, 1, false); 
        timelineTable.fnUpdate(currentTask.label, element, 4, false); 
        timelineTable.fnUpdate(currentTask.complete, element, 6, false); 
        timelineTable.fnUpdate(currentTask.comments.length, element, 7, false); 
 
        timelineTable.fnSort([[1, "asc"]]); 
 
        console.log("updated timeline tasks"); 
 
    } 
 
}  

请您参考如下方法:

嗯,隐藏表可能没有可选择的节点...但它肯定有自己的数据!

最简单的方法是保存对两个表的引用:

var mySummary = $('#exampleSum').dataTable(); 
var myTimeline = $('#exampleLine').dataTable(); 

现在您可以随时使用 myTimeline.fnGetData() 获取每个表的数据。也许您需要添加额外的不可见数据列,以便您可以更轻松地在两个表之间进行引用。 fnUpdate() 函数还可以使用 fnGetData() 中的索引。

我不确定,但也许您必须在表格再次可见之前或之后调用 myTimeline.fnDraw() 才能触发显示新数据。