Jquery包含和不包含链接

时间:2013-02-14 12:34:05

标签: jquery contains jquery-chaining

我有这样的表:

<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的TR,而不是“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

2 个答案:

答案 0 :(得分: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. 现在找到那些确实有'Adresse'的人 - td.tdSoap里面没有人做过
  4. 现在已经结合了那些 - 仍然没有内在的td.tdSoap所以没有选择任何东西。
  5. 现在,这也可以取出“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();
    

答案 1 :(得分:0)

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

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

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

相关问题