個々のクラス名に「starts with」セレクタを使用する 質問する

個々のクラス名に「starts with」セレクタを使用する 質問する

次のような場合:

<div class="apple-monkey"></div>
<div class="apple-horse"></div>
<div class="cow-apple-brick"></div>

最初の 2 つの DIV を見つけるには、次のセレクターを使用できます。

$("div[class^='apple-']")

ただし、次の場合:

<div class="some-other-class apple-monkey"></div>
<div class="apple-horse"></div>
<div class="cow-apple-brick"></div>

最初のdivのクラスは文字列として返され(私の考えでは)、実際には「apple-」ではなく「some-」で始まるため、2番目のDIVのみが見つかります。

これを回避する方法の 1 つは、starts with を使用せずに、代わりに contains を使用することです。

$("div[class*='apple-']")

問題は、私の例では 3 番目の DIV も選択されてしまうことです。

質問: jQuery では、クラス属性全体を文字列としてではなく、個々のクラス名に述語セレクターを使用する適切な方法は何ですか? クラスを取得して配列に分割し、正規表現を使用して各配列をループするだけですか? または、よりエレガントで簡潔な解決策はありますか?

ベストアンサー1

「apple-」で始まるクラスと「apple-」を含むクラス

$("div[class^='apple-'],div[class*=' apple-']")

おすすめ記事