ค้นหาองค์ประกอบทั้งหมดที่มีค่าคุณลักษณะเฉพาะใน jquery


90

ฉันต้องการค้นหาองค์ประกอบทั้งหมดที่มีค่าคุณลักษณะพิเศษ

นี่คือ div ที่ฉันต้องหา (ฉันมีหลายตัว .. )

<div imageId='imageN'>...

ฉันต้องวนลูปผ่าน div ที่มี imageId='imageN'


6
ฉันขอแนะนำให้ใช้class="imageN"เพื่อประโยชน์ของ HTML ที่ถูกต้อง ไม่ว่าอย่างนั้นหรือdata-imageId="imageN"เพื่อประโยชน์ของ HTML5 ที่ถูกต้อง ในอดีตคุณจะสามารถใช้ตัวเลือกคลาสได้
Andy E

Andy เหตุผลเบื้องหลังคือ div เหล่านี้จะถูกเพิ่มแบบไดนามิกจากโค้ดด้านหลังและมี ImageIds ที่แตกต่างกัน แต่เป็นคลาสเดียวกัน '
Pabuc

3
คุณสามารถมีหลายคลาสได้class="image imageN"หากช่วยได้
วาล

ทำไมไม่เลือกชื่อคลาสถ้าพวกเขามีคลาสเดียวกันอยู่แล้ว?
Praxis Ashelin

คำตอบ:


145
$('div[imageId="imageN"]').each(function() {
    // `this` is the div
});

ในการตรวจสอบการมีอยู่ของแอตทริบิวต์ไม่ว่าจะเป็นค่าใดคุณสามารถใช้ ths selector แทน: $('div[imageId]')


4
@ThiefMaster - ถ้าค่าแอตทริบิวต์ไม่คงที่ (คือจะแตกต่างกันไป) แล้วจะหาได้อย่างไร?
พัฒนา

คำถามสองสามข้อ: 1- แล้วองค์ประกอบอื่น ๆ ล่ะ ... 2- แล้วค่าอื่น ๆ ล่ะ ... ฉันอาจมีแอตทริบิวต์data-foodในหลายองค์ประกอบ: div's, img's และ td ซึ่งแต่ละค่ามีค่าต่างกัน
dsdsdsdsd

@ParthoGanguly คุณใช้ตัวแปรด้วยวิธีนี้: $ ('div [imageId = "' + variableName + '"]')
Kama

1
โซลูชันนี้ไม่ตอบโจทย์เรื่องชื่อเพจนี้จริงๆ คุณกำลังค้นหาองค์ประกอบที่เป็น div วิธีแก้ปัญหาที่เหมาะสมคือการไม่เชื่อเรื่องพระเจ้าขององค์ประกอบที่แท้จริง
AndroidDev

166

แม้ว่าจะไม่ตอบคำถามได้อย่างแม่นยำ แต่ฉันก็มาที่นี่เมื่อค้นหาวิธีรับคอลเล็กชันองค์ประกอบ (ชื่อแท็กที่อาจแตกต่างกัน) ที่มีชื่อแอตทริบิวต์ที่กำหนด (โดยไม่กรองตามค่าแอตทริบิวต์) ฉันพบว่าสิ่งต่อไปนี้ใช้ได้ผลดีสำหรับฉัน:

$("*[attr-name]")

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

อัปเดต: ดูเหมือนว่าไม่จำเป็นต้องใช้เครื่องหมายดอกจันเช่นจากการทดสอบขั้นพื้นฐานบางอย่างสิ่งต่อไปนี้ดูเหมือนจะเทียบเท่ากับข้างต้น (ขอบคุณ Matt ที่ชี้ให้เห็น):

$("[attr-name]")

สมบูรณ์แบบ! สิ่งที่ฉันกำลังมองหา
Paulius Matulionis

อาจเป็นไปได้ว่า ... ฉันไม่ได้ตรวจสอบด้านประสิทธิภาพ (ไม่ใช่ปัจจัยสำคัญสำหรับการใช้งานในขณะนั้น)
sammy34

3
มีความแตกต่างระหว่างสิ่งนั้น$("[attr-name]")หรือไม่? (เช่นไม่*)
Matthew

ใช่มีความแตกต่างบางอย่างระหว่างพวกเขา สัญกรณ์ดาวเกิดข้อผิดพลาดบน firefox !!!! (Unescaped ... )
ozz

นอกจากนี้คุณยังสามารถใส่ค่าแอตทริบิวต์ได้เช่น$("[data-toggle='modal']")
MeltingDog

12

ไม่เรียกว่าแท็ก สิ่งที่คุณกำลังมองหาเรียกว่าแอตทริบิวต์ html

$('div[imageId="imageN"]').each(function(i,el){
  $(el).html('changes');
  //do what ever you wish to this object :) 
});

5

คุณสามารถใช้ค่าบางส่วนของแอตทริบิวต์เพื่อตรวจหาองค์ประกอบ DOM โดยใช้เครื่องหมาย (^) ตัวอย่างเช่นคุณมี div ดังนี้:

<div id="abc_1"></div>
<div id="abc_2"></div>
<div id="xyz_3"></div>
<div id="xyz_4"></div>...

คุณสามารถใช้รหัส:

var abc = $('div[id^=abc]')

สิ่งนี้จะส่งคืนอาร์เรย์ DOM ของ div ซึ่งมี id ขึ้นต้นด้วยabc:

<div id="abc_1"></div>
<div id="abc_2"></div>

นี่คือการสาธิต: http://jsfiddle.net/mCuWS/


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