ไม่พบตัวเลือกแอตทริบิวต์ css ที่“ ไม่เท่ากัน”


106

ฉันต้องการกำหนดเป้าหมายองค์ประกอบ div โดยที่แอตทริบิวต์ "foo" มีค่า

<div foo="x">XXX</div>
<div foo="">YYY</div>

ฉันได้ลอง css นี้แล้ว แต่ไม่ได้ผล:

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

คำตอบ:


179

ใช้รหัสดังนี้:

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


7

ปัญหาอย่างหนึ่งของคำตอบที่ได้รับการยอมรับคือจะเลือกองค์ประกอบที่ไม่มี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=''])จะเลือกทั้งdivองค์ประกอบแรกและองค์ประกอบที่สอง หากคุณต้องการเฉพาะdivองค์ประกอบที่มีแอตทริบิวต์ foo ที่ตั้งค่าเป็นสตริงว่างคุณควรใช้:

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

หากคุณต้องการองค์ประกอบทั้งหมดที่มีแอตทริบิวต์fooที่ไม่ใช่yหรือzคุณควรใช้:

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

1

คุณสามารถเลือกรายการแรกโดยใช้

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

ซอ

อ่านนี่


สมมติว่ามี 100 div ซึ่งไม่มีค่า foo (foo = '') สำหรับ 50 div และ 50 div อื่น ๆ มีค่า foo ที่แตกต่างกันพูดว่า foo = x หรือ y เป็นต้นคุณต้องเขียน 50 ตัวเลือกหากเราทำตามวิธีแก้ปัญหาด้านบน
Shoaib Chikate

2
นั่นไม่ใช่สิ่งที่ฝ่ายปฏิบัติการต้องการ: "ฉันต้องการกำหนดเป้าหมายเฉพาะ div แรกต่อไปนี้ด้วยตัวเลือกแอตทริบิวต์ css"
Sunil Hari

คำตอบของคุณตรงกับความต้องการของเขา แต่ไม่ใช่วิธีแก้ปัญหาทั่วไปที่คนอื่นให้มา
Shoaib Chikate

@ShoaibChikate คุณถูกต้อง ฉันต้องการโซลูชันทั่วไปมากกว่านี้ ฉันอัปเดตคำถามเพื่อสะท้อนให้เห็นว่า
Adrian Rosca
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.