选择 TD 文本包含 foo 的任何 TR

发布于 2024-10-21 00:48:29 字数 249 浏览 2 评论 0原文

我很确定这可以在不进入函数的情况下完成,但我想抓取任何有 Mail ...< ;td>Foo ... 作为示例。

我一直认为它应该看起来像

$('tr[./text()^="foo"]') 但 chrome 不喜欢它。 或 $('tr[./td/text()^="Mail"]') 但没有运气 这可以用一个简单的选择器来完成吗?

I'm pretty sure this can be done without going into a function but I want to grab any TR where there is a <td>Mail ...</td> or <td>Foo ... </td> as examples.

I keep thinking it should look like

$('tr[./text()^="foo"]') but chrome doesn't like it.
or $('tr[./td/text()^="Mail"]') but no luck
can this be done with a simple selector?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

绮烟 2024-10-28 00:48:29

我很惊讶没有人提出这个问题,也许我的问题太模糊了。

$('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 搜索盔甲和武器

I'm quite surprised no one came up with this, maybe my question was too vague.

$('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()

Going to make it a bookmarklet for searching for armor and weapons for a dk or pally

对风讲故事 2024-10-28 00:48:29

一种可能的解决方案:

$('td').filter(function() {
    return $(this).text().indexOf('Foo') === 0;
}).closest('tr');

您必须使用 .filter() 来处理元素的文本(您不能使用选择器执行此操作,至少不能按照您想要的方式执行此操作)和 .closest() 应该是自我解释的。

编辑:但这可能会多次选择 元素。我实际上不知道 jQuery 如何处理这个问题。另一种解决方案是使用两个嵌套的 filter(在 trtd 上,但不知怎的,这感觉效率很低)。

Edit2:从版本1.4.4开始,jQuery似乎足够聪明,可以处理同一元素的多次出现(即它像一个集合一样工作)。 DEMO在这里(如果你改成1.4.2版本,你会看到第一行被选择两次)。

One possible solution:

$('td').filter(function() {
    return $(this).text().indexOf('Foo') === 0;
}).closest('tr');

You have to use .filter() to work on the element's text (you can't do this with a selector, at least not the way you want to) and .closest() should be self explaining.

Edit: But this could select a <tr> elements multiple times. I actually don't know how jQuery handles this. Another solution would be to use two nested filters (on tr and on td but somehow this feels inefficient).

Edit2: From version 1.4.4 on, jQuery seems to be smart enough to deal with multiple occurances of the same element (i.e. it works like a set). DEMO here (if you change to version 1.4.2, you'll see that the first row gets selected twice).

帥小哥 2024-10-28 00:48:29

有“contains:”

TD:contains("Mail")

但这只是在元素中的任何位置查找 Mail(没有“开头为”)。

There is "contains:"

TD:contains("Mail")

But that just looks for Mail anywhere in the element (there is no 'starts with').

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文