วิธีรับ CSS เพื่อเลือก ID ที่ขึ้นต้นด้วยสตริง (ไม่ใช่ใน Javascript)


194

หาก HTML มีองค์ประกอบดังนี้:

id="product42"
id="product43"
...

ฉันจะจับคู่ id ทั้งหมดที่เริ่มต้นด้วย "ผลิตภัณฑ์" ได้อย่างไร

ฉันเคยเห็นคำตอบที่ใช้จาวาสคริปต์อย่างแน่นอน แต่จะทำอย่างไรกับ CSS เท่านั้น?

คำตอบ:


364
[id^=product]

^=หมายถึง "เริ่มต้นด้วย" ตรงกันข้าม$=ระบุว่า "ลงท้ายด้วย"

สัญลักษณ์ที่ยืมมาจากไวยากรณ์ Regex โดยที่^และ$หมายถึง "start of string" และ "end of string" ตามลำดับ

ดูข้อกำหนดสำหรับข้อมูลเต็มรูปแบบ


1
ขอบคุณสำหรับวิธีการและคำอธิบายฉันได้แก้ไขคำถามของฉันให้ชัดเจนยิ่งขึ้น จากความอยากรู้มีวิธีจับคู่สตริงภายในสตริงของ id หรือไม่?
guptron

ดูรายละเอียดพวกเขาอธิบายได้ดีกว่าฉัน!
Niet the Dark Absolute

@itamar: ฉันซาบซึ้งที่คุณพยายามแก้ไขคำตอบของฉัน แต่ต้องอ้างเฉพาะในกรณีที่ค่ามีอักขระที่ไม่ใช่ตัวระบุที่ถูกต้อง productเป็นตัวระบุที่ถูกต้องอย่างชัดเจนดังนั้นจึงไม่จำเป็นต้องมีเครื่องหมายคำพูด
Niet the Dark Absolute

ความจำเพาะของประเภทของตัวเลือกนี้จะต่ำมาก
nuander

3
@ Emerald214:not([id^=product])
Niet the Dark Absolut

59

ฉันต้องการทำสิ่งนี้:

[id^="product"] {
  ...
}

เป็นการดีที่ใช้คลาส นี่คือสิ่งที่ชั้นเรียนมีไว้สำหรับ:

<div id="product176" class="product"></div>
<div id="product177" class="product"></div>
<div id="product178" class="product"></div>

และตอนนี้ตัวเลือกจะกลายเป็น:

.product {
  ...
}

1
@ ผู้หักบัญชีขอบคุณฉันเลือกคำตอบอื่น ๆ เพราะมันอธิบายเพิ่มเติมให้ฉันอีกเล็กน้อยและเข้าใจสัญลักษณ์ที่ใช้ ฉันไม่สามารถใช้คลาสสำหรับสถานการณ์นี้ได้มิฉะนั้นจะดีกว่า
guptron


-1

ฉันสังเกตเห็นว่ามีตัวเลือก CSS อื่นที่ทำสิ่งเดียวกัน ไวยากรณ์มีดังนี้:

[id|="name_id"]

สิ่งนี้จะเลือก ID องค์ประกอบทั้งหมดที่เริ่มต้นด้วยคำที่อยู่ในเครื่องหมายคำพูดคู่


คุณสังเกตเห็นได้อย่างไร อ้างอิง?
Ben Bozorg

เอกสารสำหรับสิ่งนี้ที่นี่: w3.org/TR/selectors-3/#attribute-selectorsนี่ควรเลือกรหัสทั้งหมดที่เริ่มต้นหรือเท่ากับ "name_id"
Dessauges Antoine

att|=valatt^=valไม่ได้เช่นเดียวกับ จากการอ้างอิงที่กล่าวถึง: |=ตัวเลือก "หมายถึงองค์ประกอบที่มีแอตทริบิวต์ att ค่าของมันอาจเป็น" val "หรือเริ่มต้นด้วย" val " ตามด้วย" - "ทันที" ดังนั้น "รหัส 42" จะไม่ถูกจับคู่ด้วย|=แต่ "42 ผลิตภัณฑ์" จะ
Goozak
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.