ฉันจะเลือกองค์ประกอบใน jQuery โดยใช้ตัวแปรสำหรับ ID ได้อย่างไร


100

ตัวอย่างเช่นต่อไปนี้เลือกส่วนที่มี id = "2":

row = $("body").find("#2");

ฉันจะทำสิ่งนี้ได้อย่างไร:

row_id = 5;
row = $("body").find(row_id);

ไวยากรณ์ข้างต้นก่อให้เกิดข้อผิดพลาด ฉันตรวจสอบเอกสาร jQuery และคำตอบที่นี่โดยไม่ประสบความสำเร็จ


6
ว้าวห้าคำตอบที่เหมือนกันทุกประการ ...
Zifre

คำตอบ:


189
row = $("body").find('#' + row_id);

ที่สำคัญกว่าการทำร่างกายเพิ่มเติมค้นหาไม่มีผลกระทบต่อประสิทธิภาพ วิธีที่เหมาะสมในการดำเนินการคือ:

row = $('#' + row_id);

46

วิธีที่สั้นที่สุดคือ:

$("#" + row_id)

การ จำกัด การค้นหาไว้ที่ร่างกายไม่ได้มีประโยชน์ใด ๆ

นอกจากนี้คุณควรพิจารณาเปลี่ยนชื่อของคุณidเป็นสิ่งที่มีความหมายมากขึ้น (และสอดคล้องกับ HTML ตามคำตอบของ Paolo) โดยเฉพาะอย่างยิ่งหากคุณมีชุดข้อมูลอื่นที่ต้องตั้งชื่อด้วย


ฉันชอบความกระชับ ฉันเพิ่งใช้สิ่งนี้กับคำแนะนำเครื่องมือ qTip2 ใช้งานได้ดี ฉันอยากรู้เล็กน้อยว่าโทษด้านประสิทธิภาพคืออะไรในการสร้าง "ทันเวลา" จำนวนมากเหล่านี้เช่นเพื่อตอบสนองต่อการป้อนข้อมูลของผู้ใช้
PJ Brunet

26

ทำ$('body').find();ไม่ได้เป็นสิ่งที่จำเป็นเมื่อมองขึ้นไปโดยใช้ ID; ไม่มีการเพิ่มประสิทธิภาพ

โปรดทราบว่าการมี ID ที่ขึ้นต้นด้วยตัวเลขไม่ใช่ HTML ที่ถูกต้อง :

โทเค็น ID และ NAME ต้องขึ้นต้นด้วยตัวอักษร ([A-Za-z]) และอาจตามด้วยตัวอักษรตัวเลข ([0-9]) ขีดกลาง ("-") ขีดล่าง ("_") , เครื่องหมายทวิภาค (":") และจุด (".")



1

มีสองปัญหากับรหัสของคุณ

  1. หากต้องการค้นหาองค์ประกอบด้วย ID คุณต้องนำหน้าด้วย "#"
  2. คุณกำลังพยายามส่งตัวเลขไปยังฟังก์ชันค้นหาเมื่อจำเป็นต้องใช้สตริง (การส่ง "#" + 5 จะแก้ไขปัญหานี้เนื่องจากจะแปลง 5 เป็น "5" ก่อน)

0

ฉันไม่รู้มากเกี่ยวกับ jQuery แต่ลองทำสิ่งนี้:

row_id = "#5";
row = $("body").find(row_id);

แก้ไข: แน่นอนถ้าตัวแปรเป็นตัวเลขคุณต้องเพิ่ม"#"ที่ด้านหน้า:

row_id = 5
row = $("body").find("#"+row_id);
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.