【问题标题】:jQuery :contains with excludejQuery:包含排除
【发布时间】:2013-01-09 22:58:49
【问题描述】:

如果它包含“Thing”(Thing 1,Thing 2),我希望发生这种情况,但如果它包含“Things”则不会发生

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

【问题讨论】:

  • .not() 添加到您的链中,或者更精确地使用.filter

标签: javascript jquery contains


【解决方案1】:

结合不同的格式选项,但关键是您想将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>");

【讨论】:

  • .not() 方法最终将为您提供比将复杂选择器或变量推入 :not() 选择器过滤器更易读的选择。在大多数情况下,这是一个更好的选择。
  • 同意,这就是我提供两个选项的原因:)
  • 从技术上讲,第一个是执行匹配的更好选择(如果适用),它只访问 DOM 一次,而第二个必须访问 DOM n+1 次,其中n 是匹配第一个选择器的 DOM 元素的数量。至少,这是我的理解……
  • 第二个示例确实再次访问了 DOM,但它没有遍历 DOM(这要昂贵得多)。元素已被选择并添加到数组中。 .not 只是循环遍历每个项目并应用限定符。
猜你喜欢
  • 2020-05-25
  • 1970-01-01
  • 2018-01-24
  • 2018-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多