我写了一个似乎正常工作的逻辑,然后最近出现了一个错误。我正在做的是允许用户将一行或多行添加到数据集。他们添加的数据被传递给一个AJAX post方法,其中发布的数据带有一组数据,我追加到刚刚以隐藏的“data”属性形式创建的行,并且这也适用于某一点。然而,我意识到我的问题是,这些属性被添加到表中的顶行而不是新创建的行,因为我迷失了如何获取最后一个新行并以方式追加属性我想要它,它似乎在tbody
的第一行。
因此,为了快速回顾一下,新行正确地添加到表中,并且在视觉上是正确的,并且我想要以data
属性的形式设置的属性起作用。但是,它们附加到哪一行之间存在混合匹配。我的当前代码是:
taskmanagerExcludeTable.fnAddData([$('#source_filter_type option:selected').text(), jqVal, '<img src="/images/icons/png/light/recycle_bin.png" alt="Delete Exclude" class="datasource_exclude_delete" data-idr="reference">']);
var theNode = taskmanagerExcludeTable.fnSettings().aoData[0].nTr;
theNode.setAttribute('data-filter_id',obj.data.filter_id);
theNode.setAttribute('data-filter_type',params.filter_type);
theNode.setAttribute('data-task_id',params.task_id);
theNode.setAttribute('data-task_type',$('#source_filter_type option:selected').text());
我想说这一行:
var theNode = taskmanagerExcludeTable.fnSettings().aoData[0].nTr;
更具体地说aoData[0]
是我的问题。由于0
被硬编码到方法中,这意味着它假定第一行。我的问题是如何动态地使用它,以便0
不是硬编码的,我可以使用某种形式的变量来获取正在创建的行的正确索引?
答案 0 :(得分:0)
无法长时间闲置我开始思考我的问题并不断重新阅读。为了让我终于明白了,我应该使用.length
计算tbody中表格上的所有行,并从中减去1
以匹配索引数据表,以便管理其数据。我自己的目的,所以我最终做的是将行计数作为变量
即:
var whichRow = $('#mytable tbody tr').length - 1;
var theNode = taskmanagerExcludeTable.fnSettings().aoData[whichRow].nTr;
这解决了我的问题。感谢那些已经看过,被认为有所帮助的人。我已经解决了这个问题。