(JavaScriptではなく)文字列で始まるIDをCSSに選択させる方法は?


192

HTMLに次のような要素がある場合:

id="product42"
id="product43"
...

「product」で始まるすべてのIDをどのように一致させますか?

javascriptを使用してこれを正確に行う回答を見てきましたが、CSSだけでそれを行う方法は?

回答:


361
[id^=product]

^=「で始まる」を示します。逆に、$=「で終わる」を示します。

シンボルは実際には正規表現構文から借用され^$「と」はそれぞれ「文字列の始まり」と「文字列の終わり」を意味します。

詳細については、仕様をご覧ください。


1
方法と説明に感謝し、質問をより明確にするために編集しました。好奇心から、IDの文字列内の文字列を照合する方法はありますか?
guptron 2012

スペックを見てください、彼らは私がそれをよりよく説明します!
Niet the Dark Absol

@itamar:私の回答を編集してみていただきありがとうございます。引用符は、値に有効な識別子ではない文字が含まれている場合にのみ必要です。product明らかに有効な識別子であるため、引用符は必要ありません。
Niet the Dark Absol 2013

セレクタのこのタイプの特異性は非常に低い
nuander

3
@ Emerald214:not([id^=product])
Niet the Dark Absol

59

私はこのようにします:

[id^="product"] {
  ...
}

理想的には、クラスを使用します。これがクラスの目的です。

<div id="product176" class="product"></div>
<div id="product177" class="product"></div>
<div id="product178" class="product"></div>

そして今セレクタは次のようになります:

.product {
  ...
}

1
@Blender、ありがとう。他の回答を選択しました。それは私にもう少し説明し、使用されている記号を理解するためです。このシナリオでクラスを使用することはできません。
guptron 2012


-1

同じことを行う別のCSSセレクターがあることに気づきました。構文は次のとおりです。

[id|="name_id"]

これにより、二重引用符で囲まれた単語で始まるすべての要素IDが選択されます。


どのように気づきましたか?参照?
Ben Bozorg 2017

このためのドキュメントはここにあります:w3.org/TR/selectors-3/#attribute-selectorsこれは、「name_id」以降のすべてのIDを選択する必要があります
Dessauges Antoine

att|=valと同じではありませんatt^=val。言及された参照から:|=セレクター「att属性を持つ要素を表します。その値は、正確に "val"か、 "val"で始まり、直後に "-"が続きます。 "したがって、" product42 "のようなIDは、|=、しかし「product-42」はそうします。
Goozak
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.