繁体   English   中英

jQuery数据表选择第一页以外的页面上的行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM