[英]Jquery Datatables select row that is on other page than 1st
嗨,我有一个数据表,像这样包含
$('.bt-datatable').DataTable(
{
info: false,
paging: true,
pageLength: 5,
"aoColumnDefs": [
{ "bSearchable": false, "aTargets": [ 1, 2, 3 ] }
]
}
);
这是我的数据表HTML,它具有用红宝石语言编码的循环,可根据用户记录创建多个行
<div class="table-responsive"style="display: none">
<hr>
<table class="bt-datatable table table-striped click-row-datatable" cellspacing="0" width="100%">
<thead>
<tr>
<th class="text-left">Name</th>
<th class="text-left">Status</th>
<th class="text-left">Start Date</th>
</tr>
</thead>
<tbody>
<%
@users.each do |user|
%>
<tr class='clickable-row' rel="<%= user.id %>">
<td class="text-left"><%= user.name %></td>
<td class="text-left"><%= user.status %></td>
<td class="text-left"><%= user.start_time %></td>
</tr>
<% end %>
</tbody>
</table>
</div>
我在ruby中有一个flash变量,该变量保存在flash[:user_id]
我正在做的是以某种方式保存flash [:user_id],并据此我要突出显示rel属性等于flash [:user_id]的行
这是页面加载时的javascript
var ele = $('[rel="<%= flash[:user_id] %>"]');
ele.addClass('bg-info');
addClass在数据表中突出显示该行,但是我面临的问题是,当用户ID行位于其中时,请在除1st之外的其他页面上说,它不会在该页面上加载表,甚至不突出显示,而是该用户位于第一页时突出显示
数据表具有$()函数,您可以使用它在整个表(不仅是可见行)上运行jQuery选择器。 在您的情况下,它将类似于:
var table = $('.bt-datatable').DataTable(
{
info: false,
paging: true,
pageLength: 5,
"aoColumnDefs": [
{ "bSearchable": false, "aTargets": [ 1, 2, 3 ] }
]
}
);
var ele = table.$('[rel="<%= flash[:user_id] %>"]');
ele.addClass('bg-info');
但是,由于您似乎已经知道在ruby渲染时要突出显示的行,让ruby处理它不是更好吗? 诸如此类(免责声明:我对红宝石不熟悉):
<tr class='clickable-row <% if user.id == flash[:user_id] %> bg-info<% end %>'>
第二部分
要显示所选行所在的页面,可以使用row()。show()插件。 为此,您需要添加插件脚本,并在代码中调用行上的show()
以显示正确的页面:
var ele = table.$('.bg-info'); // TR element (assuming you used ruby to add the class)
var row = table.row(ele); // Datatables row
row.show().draw(false); // Show the page this row is in (and draw it)
或更短:
table.row('.bg-info').show().draw(false);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.