突出显示jQuery dataTable中的特定行

时间:2014-02-08 17:36:41

标签: jquery jquery-selectors datatables jquery-datatables

我一直试图用不同的方法复制这种行为。我有两页:

  • edit.php?id = 45 是一个可以修改记录的表单,并且onSubmit会转到table.php?id = 45

  • table.php?id = 包含一个数据表,每个行都有一个第一个隐藏列,用于保存记录唯一ID。如果存在 id = 45 查询字符串,则应使用类名突出显示具有45个ID的行的行(类似于从Gmail上打开的电子邮件返回收件箱时)。

问题是我似乎无法通过任何示例找到该行。顺便说一句,我使用的是服务器端数据源,所以我不能只使用它:

$("#datatable_test tbody tr").find("td:contains("+id+")").addClass("highlight");

所以,我尝试了fnGetNodes方法而没有运气(http://datatables.net/examples/advanced_init/events_post_init.html):

var id = <?$_GET['id']?>;
$("tr", datatable_test.fnGetNodes()).each(function(data){
    $(this).find("td:contains("+id+")").addClass("highlight");
});

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

实现此目的的最简单方法是将您的记录ID包含为可见td的属性,并使用它来查找您的行。有些人喜欢......

oTable.$('[data-id=7688]').parents('tr').addClass('highlight')

如果您无法更改标记,这是找到该行的一种相当复杂的方法:

var data = oTable.fnGetData()
// assumes that the first column contains your recordId,
// that the record id cell markup is just <div>recordId</div> and
// that you have available to you the underscore.js library
var row = _.findWhere(data, {0: "<div>" + recordId + "</div>"})
var index = _.indexOf(data, row)
oTable.$('tr:eq(' + index + ')').addClass('highlight')

这次尝试是第一次尝试;我相信它可以清理一下。