jQuery 包含 |仅针对第一个祖先
Posted
技术标签:
【中文标题】jQuery 包含 |仅针对第一个祖先【英文标题】:jquery contains | target only first ancestor 【发布时间】:2011-05-20 15:23:39 【问题描述】:我试图在一个包含许多测试表的 html 页面中定位并最终设置一个字符串的样式,在这个示例 BLA 中。
例如 HTML 页面:
<table>
<tr>
<td><table><div><tr><td>BLA</td></tr></div></table></td>
</tr>
还有我使用的 jquery 脚本:
$("td:contains('BLA')");
这样做,但我看到所有的 td 都被选中了。我怎样才能得到第一个 td,没有所有的祖先? 如果这是可能的,我如何在向上 DOM 树时向第一个祖先添加一个类? (只有这一个)
感谢社区
【问题讨论】:
也许 $("td").html().contains('BLA') ? @Eric,<td>
s 都是这样
【参考方案1】:
您描述的是最后一个 td 而不是第一个,因为它们是按 DOM 层次结构顺序返回的。
$('td:contains("BLA"):not("td td")').addClass('whatever');
http://jsfiddle.net/92Xj2/ 上的演示
更新在评论澄清后
$('td:not(:has(td)):contains("BLA")').addClass('whatever');
新演示 http://jsfiddle.net/gaby/92Xj2/4/
【讨论】:
谢谢你,Gaby,不幸的是,在现实世界的例子中,没有简单的方法知道我们会有多少嵌套的:not(td td)
并不意味着两层深度。这意味着我们想要的td
没有嵌套在另一个td
的任何深度。所以它将永远是 DOM 中最顶层的td
。 (td td
被称为 descendant 选择器)
哦,我明白了。我没有解释清楚我想,我想选择dom中最底层的td而不是最顶层的..
@George,我现在明白了.. 用相反的选择器更新了答案:)
这正是我所需要的。非常感谢盖比!
以上是关于jQuery 包含 |仅针对第一个祖先的主要内容,如果未能解决你的问题,请参考以下文章