我有一个包含多行的数据表:
var table = $('#mytable').DataTable(...)
我正在尝试查找包含<a>
的具有特定数据值的行。
从文档中,我希望table.rows('<magic row-selector>')
可以使用,<magic row-selector>
的某些值。但即便是最简单的选择者似乎也不会像我期望的那样工作。
文档说如果我将一个字符串传递给rows(),它将被视为在<tr>
元素上运行的JQuery选择器。
http://datatables.net/reference/type/row-selector
现在我确定这些行中的每一行都包含许多 - 如果我检查table.rows.nodes()返回的元素的outerHTML,我可以在调试器中看到它们。所以我希望这会返回所有行:
table.rows('a')
但它没有返回。
我不理解什么?
我应该使用哪个选择器来查找包含具有指定数据属性值的<a>
的所有行?
davidkonrad的回答提供了一些帮助 - 我需要传递一个jQuery选择器对象,而不是一个字符串。
不幸的是,在定义表之前,我似乎需要构造jQuery选择器对象。我不确定我理解为什么,这似乎是一个不合理的限制,但玩弄他的小提琴,我确实看到table.rows(选择器)返回的行之间的区别在我在初始化之前或之后定义选择器之间桌子。
在我的情况下,这使得这种方法无法使用,因为我尝试做的是删除在数据属性中设置了某些值的行。在构造表之前,我无法知道用户可能选择了哪些值。
答案 0 :(得分:2)
我也认为文档在这一点上有点神秘:)意思是
<tr>
的jQuery对象因此,如果您想将jQuery对象传递给dataTables API实例,该实例包含所有<td>
包含文本&#34; test&#34;
var selector = $('tr:contains("test")');
var table = $('#example').DataTable();
var rows = table.rows(selector).data();
//now you can iterate
for (var i=0;i<rows.length;i++) {
//each rows[i] is an array of the rows columns
console.dir(rows[i]);
}
如果要将jQuery对象传递给dataTables API实例,该实例包含所有<td>
包含<a>
包含特定文本的行,例如&#34; test&#34;
var selector = $('tr a:contains("test")').parent().parent();
...
var rows = table.rows(selector).data();
...
示例中的上述选择器 - &gt;的 http://jsfiddle.net/q2p2n23m/ 强>