ระบุตัวเลือกแอททริบิวหลายตัวใน CSS


295

ไวยากรณ์สำหรับการทำสิ่งที่ชอบคืออะไร:

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

โดยทั่วไปฉันต้องการเลือกinputองค์ประกอบที่มีคุณสมบัติname="Sex"เช่นเดียวกับคุณลักษณะvalue="M":

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

ไม่ควรเลือกองค์ประกอบดังต่อไปนี้:

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

คำตอบ:


436

เรียบง่ายinput[name=Sex][value=M]น่ารักดี และเป็นจริงดีที่อธิบายไว้ในเอกสารมาตรฐาน :

ตัวเลือกคุณลักษณะหลายตัวสามารถใช้เพื่ออ้างถึงคุณลักษณะหลายอย่างขององค์ประกอบหรือแม้กระทั่งหลายครั้งถึงคุณลักษณะเดียวกัน

ที่นี่ตัวเลือกตรงกับองค์ประกอบ SPAN ทั้งหมดที่มีคุณลักษณะ "hello" มีค่า "Cleveland" และมีคุณสมบัติ "goodbye" ที่มีค่า "Columbus" อย่างแน่นอน:

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

ในฐานะที่เป็นบันทึกด้านข้างการใช้เครื่องหมายอัญประกาศล้อมรอบค่าคุณลักษณะจำเป็นเฉพาะในกรณีที่ค่านี้ไม่ใช่ตัวระบุที่ถูกต้อง

การสาธิต JSFiddle


8
มีบางอย่างเช่นนี้ แต่หรือแทน AND
törzsmókus

4
คุณหมายถึงอื่นที่ไม่ใช่,(คอมมา) หรือไม่
raina77ow

2
คุณไม่สามารถเขียน span [hello = "Cleveland"], [goodbye = "Columbus"] แต่คุณต้องทำซ้ำส่วน (อาจจะยาว)
törzsmókus

คุณจะต้อง (อย่างน้อยก็ชั่วขณะ) เว้นแต่คุณจะใช้ตัวประมวลผลล่วงหน้า ศึกษาหัวข้อนี้สำหรับรายละเอียดเพิ่มเติม
raina77ow

67

สำหรับการต่อข้อมูล:

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

และสำหรับการรวมเป็น:

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

31

ต่อเชื่อมตัวเลือกแอททริบิวต์:

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

1
เป็นที่น่าสังเกตว่าต้องมีการอ้างอย่างน้อยหนึ่งค่าของแอตทริบิวต์ สิ่งนี้จะล้มเหลวหากคุณเขียน input[name=Sex][value=M]ราวกับว่าจะมีตัวเลือกที่มีแอตทริบิวต์เดียวเท่านั้นที่ไม่ได้ใช้เครื่องหมายคำพูด
stevec

1
@stevec คุณหมายถึงการตอบคำถามนี้หรือไม่? ฉันเสนอราคาในคำตอบแล้ว ฉันก็ไม่คิดว่ามันเป็นเรื่องจริง คุณต้องการคำพูดถ้าคำตอบมีอักขระบางตัว แต่ไม่ใช่ในตัวอย่างนี้ mothereff.in/unquoted-attributes
Dennis

ฉันเพิ่มบันทึกย่อนั้นเพราะฉันลองในเบราว์เซอร์หลาย ๆ ตัวโดยไม่มีเครื่องหมายอัญประกาศ ฉันเชื่อว่าปัญหาคือไม่มีคำพูดอย่างน้อยหนึ่งรายการมันไม่ชัดเจนเพราะสามารถตีความได้ว่าเป็นอินพุตที่มีชื่อSex][value=M
สตีฟ

วงเล็บ @stevec ไม่ถูกต้องในแอตทริบิวต์ที่ไม่ได้ระบุเนื่องจากเหตุผลที่แน่นอน ตัวอย่างนี้ทำงานใน Firefox และ Chrome: jsfiddle.net/o2abekdh/3
Dennis

4

เพียงเพิ่มว่าไม่ควรมีช่องว่างระหว่างตัวเลือกและวงเล็บเปิด

td[someclass] 

จะทำงาน. แต่

td [someclass] 

จะไม่


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