2

图片我有这样的表:

<table>
    <tr>
        <td>Adresse IP</td>
        <td class='tdSoap'>10.2.3.4</td>
    </tr>
    <tr>
        <td>Zobi</td>
        <td class='tdSoap'>blabla</td>
    </tr>
    <tr>
        <td>Adresse</td>
        <td class='tdSoap'>NYC</td>
    </tr>
</table>

我想获得“NYC”值,方法是选择具有“Adresse”的 TD,而不是“Adresse IP”。

我已经用这段代码做了我想做的事:

$("table tr:has(td:contains('Adresse'))").not(":contains(Adresse\u00a0IP)").find("td.tdSoap").text();

但是,我用这种代码尝试了很多,但从未成功:

$("table tr:has(td:contains('Adresse'):not(':contains(Adresse\u00a0IP)')) td.tdSoap").text();

PS:“\u00a”是因为http://bugs.jquery.com/ticket/3450

4

2 回答 2

3

也许是这样:

$("table tr td:contains('Adresse')").not(':contains(Adresse\u00a0IP)').next('.tdSoap').text();

为什么这不起作用:(你有什么)

$("table tr:has(td:contains('Adresse'):not(':contains(Adresse\u00a0IP)')) td.tdSoap").text();

jQuery 在选择器中使用从右到左,所以可以这样想:

  1. 查找所有 td.tdSoap
  2. 现在找到那些没有任何“Adresse\u00a0IP”的人——在 td.tdSoap 里面没有人做
  3. 现在找到那些确实有“地址”的人——在 td.tdSoap 里面没有人做
  4. 现在有,结合这些 - 在 td.tdSoap 内部仍然没有,所以没有选择任何内容。

现在,这也可以取出“has”并添加下一个:

$("table tr td:contains('Adresse'):not(':contains(Adresse\u00a0IP)')").next("td.tdSoap").addClass('myfirst');

但是,运行一些性能指标,看看哪些更快:

$('table').find('tr').find('td:contains("Adresse")').not(':contains("Adresse\u00a0IP")').next('.tdSoap').text();
$('table').find('.tdSoap').prev(':contains(Adresse)').not(':contains(Adresse\u00a0IP)').next().text();
$("table tr td:contains('Adresse'):not(':contains(Adresse\u00a0IP)')").next('td.tdSoap').text();
$("table tr:has(td:contains('Adresse'))").not(":contains(Adresse\u00a0IP)").find("td.tdSoap").text();
$("table tr td:contains('Adresse')").not(':contains(Adresse\u00a0IP)').next('.tdSoap').text();

注意:如果你有更多的“组”,那些会得到所有这些的文本,不确定你是否想要所有这些,但这就是你所拥有的。

编辑:这适用于有或没有&nbsp

$('table').find('tr').find('td:contains("Adresse")').not(':contains("Adresse\u00a0IP")').not(':contains("Adresse IP")').next('.tdSoap').text();
于 2013-02-14T14:12:20.333 回答
0

如果您不能修改 HTML,那么这应该可以解决问题:

$('table tr:has(td:contains("Adresse"):not(:contains("Adresse IP"))) td.tdSoap').text()

否则,我建议尝试 Mahmood 在评论中所说的内容,并给出一些特定的选择。

于 2013-02-14T12:49:55.507 回答