Javascript jQuery:contains与exclude

Javascript jQuery:contains与exclude,javascript,jquery,contains,Javascript,Jquery,Contains,如果它包含“Thing”(thing1,thing2),我希望这种情况发生,但如果它说的是“Things”,则不希望发生这种情况 $(“nav#breadcrumbs:contains('Thing'))。append(我是一个Thing); 耦合不同的格式选项,但关键是您希望将not选择器与:contains结合使用: $("nav#breadcrumbs:contains('Thing'):not(:contains('Things'))").append("<p>I'm a T

如果它包含“Thing”(thing1,thing2),我希望这种情况发生,但如果它说的是“Things”,则不希望发生这种情况

$(“nav#breadcrumbs:contains('Thing'))。append(我是一个Thing

);
耦合不同的格式选项,但关键是您希望将
not
选择器与
:contains
结合使用:

$("nav#breadcrumbs:contains('Thing'):not(:contains('Things'))").append("<p>I'm a Thing</p>");

$("nav#breadcrumbs:contains('Thing')").not(":contains('Things')").append("<p>I'm a Thing</p>");
$(“导航(breadcrumbs:contains('Thing'):not('contains('Things')))”)。追加(我是一个Thing

); $(“nav#breadcrumbs:contains('Thing'))。而不是('contains('Things'))。追加(我是一个Thing

);
.not()
添加到链中,或者更精确地使用
.filter
。与将复杂选择器或变量推入:not()选择器筛选器相比,.not()方法最终将为您提供更可读的选择。在大多数情况下,它是一个更好的选择。同意,这就是为什么我提供了两个选项:)从技术上讲,第一个是更好的选项(如果适用),因为要执行匹配,它只访问DOM一次,而第二个则必须访问DOM n+1次,其中n是匹配第一个选择器的DOM元素数。至少,这是我的理解……第二个示例确实再次访问了DOM,但它没有遍历DOM(这要昂贵得多)。元素已被选择并添加到数组中。
.not
只是在每个项目上循环并应用限定符。
$("nav#breadcrumbs:contains('Thing'):not(:contains('Things'))").append("<p>I'm a Thing</p>");

$("nav#breadcrumbs:contains('Thing')").not(":contains('Things')").append("<p>I'm a Thing</p>");