如果td包含这个文本,也会拉动其他元素

时间:2015-08-08 20:21:39

标签: jquery

我在这里设置了一个小提琴 - https://jsfiddle.net/v1bbsm43/3/

我没有能力改变这个网站上现有的HTML,但是我试图让一些内容附加到其他地方,并且使用contains,它会提取它不应该的其他数据。我无法在这里找到我做错的事。

我只是在td单元格中搜索那些有span类的单元格,然后每个span类包含1个字母,所以我使用:contains(),但由于某种原因其他不包含该字母的span也会被克隆。

    $('td.two_column_layout .report td.player:has(.warning):contains(O)').clone().appendTo('#InvalidLineup');
    $('td.two_column_layout .report td.player:has(.warning):contains(P)').clone().appendTo('#InvalidLineup2');
    $('td.two_column_layout .report td.player:has(.warning):contains(Q)').clone().appendTo('#InvalidLineup3');
    $('td.two_column_layout .report td.player:has(.warning):contains(S)').clone().appendTo('#InvalidLineup4');

当我使用:contains(S):contains(O)时,该功能会抓取不应该的内容。

1 个答案:

答案 0 :(得分:1)

那是因为 Beckham,Odell NYG WR 包含O(在Odell中)和其他此类不准确之处。将括号添加到包含中(为了便于阅读,请添加引号):

..:has(.warning):contains("(O)")

工作fiddle

  

修改

在再次查看代码和评论之后,我发现了“真正的”错误。您已将:has(.warning)部分与:contains(O)部分分开。它的作用是查找td.player 任何具有类warning AND <的元素em>包含 文本“O”。您要做的是找到一个td.player,其中包含类warning的元素 THAT 包含文本“O”本身。那样做:

..:has(.warning:contains(O))

第二次工作fiddle