JQuery:如何从表中选择行
我有一个场景,我想根据td中的值从表中选择行
我有一张这样的桌子
John Smith Male Andy Gates Male Alice Nixon Female
现在我想选择所有行,如果第一个td的值是x ,则第二个td的值是y
在momemnt,我正在做这样的事情
$("tr").each(function (index) { if ($(this).find('td:eq(0)').text().trim() == x && $(this).find('td:eq(1)').text().trim() == y) ...do somethin.... });
循环遍历每一行并检查。 这很冗长。 有没有更好的方法来实现这一目标。 我似乎无法用选择器找出AND运算符逻辑?
等待,
$("tr").each(function (index) { if ($.trim($(this).find('td:eq(0)').text()) == x && $.trim($(this).find('td:eq(1)').text()) == y) { $(this).closest('table').css('border', '1px solid red'); // this should do it } });
或者,使用.filter
:
$("tr").filter(function() { return $.trim($(this).find('td:eq(0)').text()) == 'John' && $.trim($(this).find('td:eq(1)').text()) == 'Smith'; }).closest('table').find('tr').css('border', '1px solid red');
演示: http : //jsfiddle.net/WhFbE/5/
这是一个应该工作的选择器:
试一试: http : //jsfiddle.net/N6TdM/
var x = "Andy"; var y = "Gates"; var res = $("td:first-child:contains(" + x + ") + td:contains(" + y + ")");
请注意,如果您具有以下内容,则可能会失败:
FIRST: Roberto Rob SECOND: Robertson Roberts
搜索“Rob Roberts”会给出两场比赛。
您可以使用HTMLTableRowElement上的本机DOM cells
属性直接访问单元格,而不是在环形交叉路口发送jQuery,列出所有后代单元格,并使用非标准:eq
选择器选择一个。
$('tr').each(function (index) { if ( $(this.cells[0]).text().trim()===x && $(this.cells[1]).text().trim()===y ) { ... } });
虽然它可能不会产生严重的性能差异。 另一种方法是简单地维护包含预先修剪数据的数组数组,以便甚至可以节省DOM。