将数据属性放在 DataTables 1.10 上的行上

Posted

技术标签:

【中文标题】将数据属性放在 DataTables 1.10 上的行上【英文标题】:put data attribute on row add on DataTables 1.10 【发布时间】:2015-01-01 04:33:57 【问题描述】:

我使用此代码使用table.row.add() 方法在DataTables 1.10.2 上动态添加新行:

table.row.add([
    '',
    name,
    target_l,
    details,
    panel.html()    
]).draw();

我制作了这个标记:

<tr role="row" class="odd">
    <th>1 .</th>
    <td class="sorting_1">ID Fee</td>
    <td>All students</td>
    <td></td>
    <td>
        <button class="btn btn-null btn-xs" onclick="_remove(59, 'ID Fee')">
            <span class="fui-cross"></span>
        </button>
        <button class="btn btn-null btn-xs" onclick="_edit(59, 'ID Fee', '', '')">
            <span class="icon-pencil"></span>
        </button>
    </td>
</tr>

我想要做的是添加一个data-id(和其他数据)归因于新添加的tr标签(在行插入上或之后)并制作它是这样的:

<tr data-id="59" role="row" class="odd">

我已经设法使用代码获取新添加行的索引,它返回最后一行索引

var i = table.row.add([
    '',
    name,
    target_l,
    details,
    panel.html()    
]).index();

并且还尝试执行以下操作以使用 that 索引添加 data-id 属性

var id = $("#department_id").val();
table.row(i).attr("data-id", id);
// table.row(i).data("id", id);
// I wanted to try this but there is also a method called data() already in
// DataTables so it will not work like in JQuery.

我是 DataTables 的新手,并且已经滚动了它的源代码,红色 cmets。虽然不善于理解以_fn*()开头的功能。如果有任何其他方法不依赖这些_fn*() 函数,谢谢!

【问题讨论】:

在您的注释代码中,您说您想做类似table.row(i).data("id",id); 的事情,但由于DataTables 有一个函数data,所以不能。您是否尝试过将 table.row(i) 包装在 jQuery 函数中,然后在其上调用 jQuery 的 data table.row(i) 不是 jquery 对象。您不能期望 data 或 attr 函数可以使用它。您需要先将其包装在 jQuery 函数中,然后才能使用其他函数 $(table.row(i)).data("id", id); 你有没有解决过这个问题,或者它仍然是一个悬而未决的问题? 我还没有解决这个问题。 :-( 【参考方案1】:

您可以使用rows().nodes() API 函数,见下文:

var i = table.row.add([
    '',
    name,
    target_l,
    details,
    panel.html()    
]).index();

var id = $("#department_id").val();
table.rows(i).nodes().to$().attr("data-id", id);

【讨论】:

不知道为什么,但.to$() 对我来说不适用于.node()。不得不使用$( table.row(i).node() ) @FelipeLeão,感谢您的评论。看来to$() 仅适用于nodes() 而不是node(),这是一种未记录的。您的解决方法很好。 .to$() 将节点变成一个 jQuery 元素。

以上是关于将数据属性放在 DataTables 1.10 上的行上的主要内容,如果未能解决你的问题,请参考以下文章

数据表 1.10 - TD 中的 HTML5“数据顺序”属性无效

1.10 中的 DataTables 无限滚动

确定 DataTables 是不是在 1.10 版中完成。有回调吗?

模型绑定新的 Datatables 1.10 参数

Datatables 1.10 仅通过单击排序图标

如何使用 jQuery.dataTables 1.10 向 ASP.NET WebMethod 后端发送和接收 JSON?