我很确定这可以在不进入函数的情况下完成,但我想抓住任何TR,例如<td>Mail ...</td>
或<td>Foo ... </td>
。
我一直认为它应该像
$('tr[./text()^="foo"]')
但Chrome并不喜欢它。
或$('tr[./td/text()^="Mail"]')
但没有运气
可以用一个简单的选择器来完成吗?
答案 0 :(得分:21)
我很惊讶没有人想到这个,也许我的问题太模糊了。
$('tr:has(td:contains("Leather"))').hide()
$('tr:has(td:contains("Mail"))').hide()
$('tr:has(td:contains("Cloth"))').hide()
$('tr:has(td:contains("Bow"))').hide()
$('tr:has(td:contains("Gun"))').hide()
将其作为用于搜索dk或pally的装甲和武器的书签
答案 1 :(得分:5)
一种可能的解决方案:
$('td').filter(function() {
return $(this).text().indexOf('Foo') === 0;
}).closest('tr');
您必须使用.filter()
来处理元素的文本(您不能使用选择器执行此操作,至少不是您想要的方式)并且.closest()
应该自我解释。< / p>
编辑:但这可以多次选择<tr>
个元素。我实际上不知道jQuery如何处理这个问题。另一个解决方案是使用两个嵌套的filter
(在tr
和td
上,但不知怎的,效果不佳)。
Edit2:从版本1.4.4开始,jQuery似乎足够聪明,可以处理同一元素的多次出现(即它就像一个集合)。 DEMO here (如果您更改为1.4.2版,则会看到第一行被选中两次)。
答案 2 :(得分:1)
有“包含:”
TD:contains("Mail")
但这只是在元素中的任何地方查找邮件(没有'开头')。