我在这里设置了一个小提琴 - 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)
时,该功能会抓取不应该的内容。
答案 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