jQuery:选择tr,其中td符合多个标准

Jan*_*ger 2 jquery jquery-selectors dom-traversal

我想知道,是否可以<tr>从满足多种条件的<table>地方选择<td>.例如(参见最后的样本表):

得到所有<tr>的第一列是"奥迪" ,第二列是"红色"

我已经找到了如何过滤一个柱子:

$('tr:has(td:nth-child(1):contains("Audi"))').doSomeThing();
Run Code Online (Sandbox Code Playgroud)

但我的问题是如何过滤AND条件,如:

$('tr:has(td:nth-child(1):contains("Audi") && td:nth-child(2):contains("red"))').doSomeThing();
Run Code Online (Sandbox Code Playgroud)

我知道有多属性选择器,但因为我正在搜索.text()属性,所以它不适合我的问题.

我的样本表:

<table id="list">
<tr>
    <td>Audi</td>
    <td>red</td>
</tr>
<tr>
    <td>Audi</td>
    <td>yellow</td>
</tr>
<tr>
    <td>Audi</td>
    <td>green</td>
</tr>
<tr>
    <td>BMW</td>
    <td>red</td>
</tr>
<tr>
    <td>BMW</td>
    <td>yellow</td>
</tr>
<tr>
    <td>BMW</td>
    <td>green</td>
</tr>
    ...
</table>
Run Code Online (Sandbox Code Playgroud)

Thanx为您提供帮助!

Asa*_*din 7

使用此filter方法可根据其他条件缩小初始选择范围.

$('tr:has(td:nth-child(1):contains("Audi"))').filter(':has(td:nth-child(2):contains("red"))').doSomeThing();
Run Code Online (Sandbox Code Playgroud)

如果您正在寻找单个选择器,那么可读性较差:

$('tr:has(td:nth-child(1):contains("Audi")):has(td:nth-child(2):contains("red"))').doSomeThing();
Run Code Online (Sandbox Code Playgroud)

这是一个演示:http://jsfiddle.net/8Mnsf/2/

您还可以通过以下方式提高可读性:

$('tr')
    .has('td:nth-child(1):contains("Audi")')
    .has('td:nth-child(2):contains("red")')
    .doSomeThing();
Run Code Online (Sandbox Code Playgroud)