Jquery数据表选择除第1

时间:2016-04-27 13:24:31

标签: javascript jquery html datatables

嗨我有一个像这样包含的数据表

$('.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页的其他页面上,它不会在该页面上加载表,甚至不突出显示,相反,它仅突出显示该用户在第一页中的时间

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);