「等しくない」CSS属性セレクターが見つからない


回答:


174

次のようなコードを使用します。

div:not([foo=''])
{
    /* CSS Applied to divs having foo value Not nothing (or having a foo value assigned) */
}


6

受け入れられた回答の1つの問題は、foo属性をまったく持たない要素も選択することです。検討してください:

<div>No foo</div>
<div foo="">Empty foo</div>
<div foo="x">XXX</div>
<div foo="y">YYY</div>
<div foo="z">ZZZ</div>

div:not([foo=''])最初と2番目のdiv要素の両方が選択されます。div空の文字列に設定された属性fooを持つ要素のみが必要な場合は、次を使用する必要があります。

div[foo]:not([foo=''])

属性fooyでもzでもないすべての要素が必要な場合は、以下を使用する必要があります。

div[foo]:not([foo='y']):not([foo='z'])

1

あなたはを使用して最初のものを選択することができます

[foo = 'x']{
  background:red;
}

FIDDLE

これを読む


50 divのfoo値がない(foo = '')の100 divがあり、他の50 divがfoo = xまたはyなどの別のfoo値を持っているとすると、上記のソリューションに従う場合、50のセレクターを記述する必要があります
Shoaibチケイト

2
それは、opが望んでいることではありません。「css属性セレクターを使用して、次のdivの最初のものだけをターゲットにしたい」
Sunil Hari

あなたの答えは彼の要件で正しいですが、他の人々が与えた一般的な解決策ではありません。
Shoaib Chikate

@ShoaibChikate正解です。より一般的な解決策が必要です。それを反映するように質問を更新しました。
エイドリアンロスカ2014
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.