使用多个选择器查找prev()标记

Ale*_*x K 6 javascript jquery xpath jquery-selectors

让我们面对这种情况:

<ul>
  <li>data</li>
  <li class="selector">data2</li>
  <li class="selector2">data3</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

我想要做的是匹配li具有selector类或具有类属性的s,undefined如下所示:

jQuery(function($) {
  $('.selector2').prevAll('li.selector OR li[class==""]');
});
Run Code Online (Sandbox Code Playgroud)

所以,如果我跑prevAll().selector2,它应该返回2个列表项.如果我运行它.selector,它应该返回第一个列表项.

那么有没有办法取代那个OR ......?

PS:xpath也可能对我有用,因为我正在为现代浏览器开发

the*_*dox 5

jQuery(function($) {
  $('.selector2').prevAll('li.selector, li:not([class])');
});
Run Code Online (Sandbox Code Playgroud)

DEMO

添加来自@pimvdb的重要评论

这是正确的,但要小心 - 就像 .addClass("foo").removeClass("foo")留下class属性一样,尽管你(可能)期望它处于初始状态.所以它并不完全相同[class=''].

  • 这是正确的,但要小心 - 像`.addClass("foo").removeClass("foo")`留下`class`属性,尽管你(可能)期望它处于初始状态.所以它与`[class ='']`不完全相同. (3认同)