Không thể tìm thấy bộ chọn thuộc tính css "không bằng"


103

Tôi muốn nhắm mục tiêu các phần tử div trong đó thuộc tính "foo" có giá trị.

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

Tôi đã thử css này, nhưng nó không hoạt động:

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

Câu trả lời:


174

Sử dụng mã như sau:

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


6

Một vấn đề với câu trả lời được chấp nhận là nó cũng sẽ chọn các phần tử không có foothuộc tính nào cả. Xem xét:

<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=''])sẽ chọn cả phần tử đầu tiên và divphần tử thứ hai . Nếu bạn chỉ muốn divcác phần tử có foo thuộc tính được đặt thành một chuỗi rỗng, bạn nên sử dụng:

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

Nếu bạn muốn tất cả các phần tử có thuộc tính fookhông ycũng như không z, bạn nên sử dụng:

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

1

Bạn có thể chọn cái đầu tiên bằng cách sử dụng

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

VĨ CẦM

Đọc này


Giả sử có 100 div trong số đó không có giá trị foo (foo = '') cho 50 div và 50 div khác có giá trị foo khác nhau nói foo = x hoặc y, v.v. thì bạn cần phải viết 50 bộ chọn nếu chúng ta làm theo giải pháp trên
Shoaib Chikate

2
Đó không phải là mong muốn của op: "Tôi chỉ muốn nhắm mục tiêu số div đầu tiên trong số các div sau bằng bộ chọn thuộc tính css"
Sunil Hari

Câu trả lời của bạn đúng với yêu cầu của anh ấy nhưng không phải là giải pháp chung chung mà người khác đưa ra.
Shoaib Chikate

@ShoaibChikate Bạn nói đúng. Tôi muốn giải pháp chung chung hơn. Tôi đã cập nhật câu hỏi để phản ánh điều đó.
Adrian Rosca
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.