jQuery和选择器

时间:2011-07-03 23:02:41

标签: jquery jquery-selectors selector

我的页面上有一个datagrid(asp.net)。我想选择第一列中包含'foo'一词的所有行,并在第二列中选择'bar'一词。

我只知道如何为第一列做到这一点。

jQuery('[id$="datagrid1"] tr td:contains(foo)')

任何人都可以告诉我如何在第二栏中加入“bar”这个词的条件吗?

修改 另外,我该如何准确匹配这个词?当单元格包含单词时,选择器contains匹配。

3 个答案:

答案 0 :(得分:6)

选择器只能让你到目前为止。使用.filter()可获得最大的灵活性:

jQuery('[id$="datagrid1"] tr').filter(function () {
    return $('td:eq(0)', this).text() == 'foo' &&
        $('td:eq(1)', this).text() == 'bar';
});
  • .filter()函数遍历每个元素,并希望您返回truefalse以指示元素是否应保留(匹配)。
  • :eq()选择器允许您在匹配的集合中选择索引。

答案 1 :(得分:3)

像这样:

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>

希望这会有所帮助。干杯

答案 2 :(得分:2)

您可以使用next-sibling selector,假设第二列<td>与第一列<td>相邻