让我们面对这种情况:
<ul>
<li>data</li>
<li class="selector">data2</li>
<li class="selector2">data3</li>
</ul>
我要做的是匹配li
类或具有类属性selector
的{{1}},如下所示:
undefined
因此,如果我在jQuery(function($) {
$('.selector2').prevAll('li.selector OR li[class==""]');
});
上运行prevAll()
,则应返回2个列表项。如果我在.selector2
上运行它,它应该返回第一个列表项。
那么有没有办法取代那个OR??
PS:xpath也可能对我有用,因为我正在为现代浏览器开发
答案 0 :(得分:5)
jQuery(function($) {
$('.selector2').prevAll('li.selector, li:not([class])');
});
<强> DEMO 强>
这是正确的,但要小心 - 像
.addClass("foo").removeClass("foo")
保留class属性 尽管你(可能)期望它处于初始状态。所以 它与[class='']
不完全相同。
答案 1 :(得分:4)
我想要做的就是匹配{&#34;选择器&#34;类 或者具有未定义的类属性
此XPath表达式等同于问题中的伪代码:
li
但是,所引用要求的文字翻译为:
/ul/li[@class='selector2']/preceding-sibling::li[@class='selector' or not(@class)]