嗨我有一个像这样包含的数据表
$('.bt-datatable').DataTable(
{
info: false,
paging: true,
pageLength: 5,
"aoColumnDefs": [
{ "bSearchable": false, "aTargets": [ 1, 2, 3 ] }
]
}
);
这是我的数据表Html,它有用ruby语言编写的循环,根据用户记录创建多行
<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]
我正在做的是以某种方式我保存了闪存[:user_id]并根据我想要突出显示其rel属性等于flash的行[:user_id]
这是页面加载时的javascript
var ele = $('[rel="<%= flash[:user_id] %>"]');
ele.addClass('bg-info');
addClass突出显示数据表中的行,但是我面临的问题是当用户id行在,而不是在第1页的其他页面上,它不会在该页面上加载表,甚至不突出显示,相反,它仅突出显示该用户在第一页中的时间
答案 0 :(得分:1)
Datatables有一个$()函数,可用于在整个表中运行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);