Chỉ định nhiều bộ chọn thuộc tính trong CSS


296

Cú pháp để làm một cái gì đó như:

input[name="Sex" AND value="M"]

Về cơ bản, tôi muốn chọn inputphần tử có thuộc tính name="Sex"cũng như thuộc tính value="M":

<input type="radio" name="Sex" value="M" />

Các yếu tố như sau không nên được chọn:

<input type="radio" name="Sex" value="F" />

Câu trả lời:


437

Đơn giản input[name=Sex][value=M]sẽ làm khá tốt đẹp. Và nó thực sự được mô tả tốt trong tài liệu tiêu chuẩn :

Nhiều bộ chọn thuộc tính có thể được sử dụng để chỉ một số thuộc tính của một thành phần hoặc thậm chí nhiều lần cho cùng một thuộc tính.

Ở đây, bộ chọn khớp với tất cả các thành phần SPAN có thuộc tính "hello" có chính xác giá trị "Cleveland" và thuộc tính "tạm biệt" có chính xác giá trị "Columbus":

span[hello="Cleveland"][goodbye="Columbus"] { color: blue; }

Là một lưu ý phụ, chỉ sử dụng dấu ngoặc kép quanh một giá trị thuộc tính nếu giá trị này không phải là định danh hợp lệ.

Trình diễn JSFiddle


8
có cái gì đó như thế này, nhưng HOẶC thay vì AND?
törzsmókus

4
Ý bạn là khác với ,(dấu phẩy)?
raina77ow

2
bạn không thể viết span [hello = "Cleveland"], [goodbye = "Columbus"] nhưng bạn phải lặp lại một phần (có thể dài).
törzsmókus

Bạn phải thực sự (ít nhất là tại thời điểm này), trừ khi bạn sử dụng tiền xử lý. Tham khảo chủ đề này để biết thêm chi tiết.
raina77ow

67

Để nối nó:

input[name="Sex"][value="M"] {}

Và để liên minh, đó là:

input[name="Sex"], input[value="M"] {}

31

Ghép các bộ chọn thuộc tính:

input[name="Sex"][value="M"]

1
Cần lưu ý rằng ít nhất một trong các giá trị thuộc tính phải được trích dẫn. Điều này sẽ thất bại nếu bạn viết nó input[name=Sex][value=M]ngay cả khi nó có giá trị khi có một bộ chọn chỉ có một thuộc tính không sử dụng dấu ngoặc kép.
stevec

1
@stevec Ý của bạn là đưa câu trả lời này vào câu trả lời được chấp nhận? Tôi đã trích dẫn các giá trị trong câu trả lời của tôi. Tôi cũng không nghĩ đó là sự thật. Bạn cần trích dẫn nếu câu trả lời có chứa một số ký tự nhất định nhưng không có trong ví dụ này. Mothereff.in/unquote-attribut
Dennis

Tôi đã thêm ghi chú đó vì tôi đã thử nó trong một số trình duyệt mà không có dấu ngoặc kép và nó đã thất bại trong tất cả. Tôi tin rằng vấn đề là không có trích dẫn về ít nhất một, điều này không rõ ràng bởi vì nó có thể được hiểu là một đầu vào có tên làSex][value=M
stevec

Dấu ngoặc @stevec không hợp lệ trong các thuộc tính không được trích dẫn vì lý do chính xác đó. Ví dụ này hoạt động trong Firefox và Chrome: jsfiddle.net/o2abekdh/3
Dennis

4

Chỉ cần thêm rằng không nên có khoảng cách giữa bộ chọn và khung mở.

td[someclass] 

sẽ làm việc. Nhưng

td [someclass] 

sẽ không.


-6
[class*="test"],[class="second"] {
background: #ffff00;
}
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.