6

この状況に直面しましょう:

<ul>
  <li>data</li>
  <li class="selector">data2</li>
  <li class="selector2">data3</li>
</ul>

私がやろうとしているのは、次のようなclass または class 属性をli持つ s に一致することです。selectorundefined

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

したがって、で実行prevAll()している場合.selector2、2 つのリスト項目が返されるはずです。で実行すると.selector、最初のリスト項目が返されます。

そのOR ...を置き換える方法はありますか?

PS:私は最新のブラウザ用に開発しているので、xpathもうまくいくかもしれません

4

2 に答える 2

5
jQuery(function($) {
  $('.selector2').prevAll('li.selector, li:not([class])');
});

デモ

@pimvdb からの重要なコメントを追加

これは正しいですが、注意 .addClass("foo").removeClass("foo")してください。初期状態にあると予想される場合でも、class 属性を残すようなものがあります。したがって、 とまったく同じではありません[class='']

于 2012-06-09T14:32:02.733 に答える
4

私がやろうとしているliのは、「セレクター」クラスを持つか、未定義のクラス属性を持つ s に一致することです

この XPath 式は、質問の疑似コードと同等です

/ul/li[@class='selector2']/preceding-sibling::li[@class='selector' or not(@class)]

ただし、引用された要件の直訳は次のとおりです。

/ul/li[@class='selector' or not(@class)]
于 2012-06-09T14:37:48.450 に答える