jQuery AND 选择器
Posted
技术标签:
【中文标题】jQuery AND 选择器【英文标题】:jQuery AND selector 【发布时间】:2011-09-27 19:23:41 【问题描述】:我的页面上有一个 datagrid(asp.net)。我想选择第一列中包含单词“foo”和第二列中包含单词“bar”的所有行。
我只知道第一栏怎么做。
jQuery('[id$="datagrid1"] tr td:contains(foo)')
谁能告诉我如何为第二列包含“bar”一词的条件?
编辑:
另外,我如何准确匹配这个词?当单元格包含单词时,选择器contains
匹配。
【问题讨论】:
【参考方案1】:选择器只能让你到目前为止。使用.filter()
以获得最大的灵活性:
jQuery('[id$="datagrid1"] tr').filter(function ()
return $('td:eq(0)', this).text() == 'foo' &&
$('td:eq(1)', this).text() == 'bar';
);
.filter()
函数遍历每个元素,并希望您返回 true
或 false
以指示是否应保留该元素(匹配)。
:eq()
选择器允许您在匹配集中选择一个索引。
【讨论】:
我尝试了 jerluc 的建议,这段代码似乎有效:jQuery('[id$="datagrid1"] tr td:contains(foo)+td:contains(bar)')
@StarCub,但正如你所提到的,它不会完全匹配这个词。它也严格不只查看第 1 列和第 2 列 - 如果您有更多列,它也会尝试匹配第 2 列和第 3 列,等等。【参考方案2】:
像这样:
jQuery('[id$="datagrid1"] tr').filter(function()
var $tds = $(this).find("td");
return ($tds.eq(0).text()=="foo" && $tds.eq(1).text()=="bar");
);
相同的代码更“解释”
$trs = jQuery('[id$="datagrid1"] tr').filter(function()
var $first_td = $(this).find("td").eq(0); //First column
var $second_td = $(this).find("td").eq(1); //Second column
return ($first_td.text()=="foo" && $second_td.text()=="bar"); //Condition to filter
);
这会返回一组匹配您想要的条件的<tr>
。
希望这会有所帮助。干杯
【讨论】:
感谢您的回答。我只能选择一个答案,@Box9 先回答。【参考方案3】:假设第二列<td>
与第一列<td>
相邻,您可以使用next-sibling selector
【讨论】:
以上是关于jQuery AND 选择器的主要内容,如果未能解决你的问题,请参考以下文章