Javascript 使用jQuery:contains时如何忽略子元素中的匹配

Javascript 使用jQuery:contains时如何忽略子元素中的匹配,javascript,jquery,html,css,jquery-selectors,Javascript,Jquery,Html,Css,Jquery Selectors,我看了一下,但建议的解决方案都很复杂 我试图选择第二个div,其中包含一些文本,如下所示 <div> <div> mytext </div> </div> 不幸的是,这也会选择(使红色)我要选择的div的所有父div。这是因为:contains在所选元素及其子元素中查找匹配项 是否有类似的命令,它不会在子体中查找匹配项?我不想选择所有的父div,只选择直接包含文本的div。问题是$('div:contains(“m

我看了一下,但建议的解决方案都很复杂

我试图选择第二个
div
,其中包含一些文本,如下所示

<div>
    <div>
        mytext
    </div>
</div>
不幸的是,这也会选择(使红色)我要选择的
div
的所有父
div
。这是因为
:contains
在所选元素及其子元素中查找匹配项


是否有类似的命令,它不会在子体中查找匹配项?我不想选择所有的父
div
,只选择直接包含文本的
div

问题是
$('div:contains(“mytext”))
将匹配包含
mytext
文本的所有
div
,或者它们的子节点包含它

您可以使用
id
class
识别这些div,因此您的选择器将针对这种情况:

$('div.special:contains("mytext")').css("color", "red");
演示:

$('div.special:contains(“mytext”)).css(“color”、“red”)

我的文本

您可以使用jQuery中的
find()
方法找到目标
div

示例:
$('div').find(':contains(“mytext”)).css(“color”、“red”)

我的文本

这是因为所有的祖先
div
都与选择器匹配。@evolutionxbox的可能重复:为什么你要在注释中重复问题中的语句?这比
last()
imo更好,我不会依赖它。有人能详细说明使用
last()
有什么问题吗?在我的例子中,它起了作用。@Andras使用
.last()
匹配节点集合,然后调用另一个jQuery方法
.last()
将此集合缩减为最后一个集合,而使用
:not
selector,您可以在一个操作中完成所有操作。另一件事是,
.last()
并不总是相关的。如果您有多个子divs元素包含
myText
,它将只与最后一个匹配,请参阅。@Kaddah是的,
.last()
并不总是相关的,在实际设置中,我想选择的
div
中还有另一个
div
,有人能告诉我投票失败的原因吗?
find()
似乎与普通
:contains(“mytext”)
做了同样的事情。它还返回所有父元素。@Andras它不会选择父元素。你可以检查小提琴,它没有完全按照预期的方式工作,看起来不错!我已经对你的答案投了赞成票,所以不能再投反对票了。否则我会的。
$('div.special:contains("mytext")').css("color", "red");