【问题标题】:How do I perform an OR search on jQuery attributes?如何对 jQuery 属性执行 OR 搜索?
【发布时间】:2025-12-26 20:35:11
【问题描述】:

我有一堆 li 具有一些自定义属性的项目:

<ul>
  <li count="1">foo</li>
  <li count="1">foo1</li>
  <li count="*">foo2</li>
  <li>foobar</li>
  <li count="0">bar2</li>
  <li count="*">bar3</li>
</ul>

我想选择那些 li 元素的属性 count 的值为 1 或 0。我可以不执行 2 次选择来执行此操作吗?

我可以看到如何执行 AND 选择以缩小结果范围(例如 $("li[count='0'][otherAttr='blah']")...)。但我不确定您是否可以执行 OR 选择。

提前感谢您的帮助!

【问题讨论】:

    标签: jquery jquery-selectors jquery-attributes


    【解决方案1】:

    使用逗号

     $("li[count='0'], li[otherAttr='blah']")....
    

    【讨论】:

      【解决方案2】:

      您可以使用多种方式,但您需要使用逗号:

      $("li[count='0'], li[count='1']")...
      

      或者,我的首选方法...

      $("li").filter("[count='1'], [count='0']")...
      

      【讨论】:

      • 你为什么喜欢这种方式?它是让您阅读更干净,还是有性能优势?
      • 阅读起来更干净。我只是对它进行了基准测试,并且不使用过滤器,(方法 1)您实际上节省了一些函数调用。但是,如果您有一个带有非特定选择器的大型 DOM,则使用过滤器(方法 2)会更快(当然,速度更快)。
      • 谢谢。这是一个有趣的观点。这有帮助。
      【解决方案3】:

      你不能用li[count*='01']吗?

      【讨论】:

      • 使用[attribute*='string'] 将选择具有“包含”字符串的属性的项目,而不是包含每个单独字母的属性:s、t、r、i、n、g。