ค้นหาองค์ประกอบทั้งหมดบนหน้าที่มี ID องค์ประกอบประกอบด้วยข้อความบางอย่างโดยใช้ jQuery


131

ฉันพยายามค้นหาองค์ประกอบทั้งหมดในหน้าที่มีรหัสองค์ประกอบประกอบด้วยข้อความบางอย่าง จากนั้นฉันจะต้องกรององค์ประกอบที่พบตามว่าถูกซ่อนอยู่หรือไม่ ความช่วยเหลือใด ๆ ที่ได้รับการชื่นชมอย่างมาก


อาจซ้ำกันได้ของนิพจน์ทั่วไป
Robert MacLean

คำตอบ:


202
$('*[id*=mytext]:visible').each(function() {
    $(this).doStuff();
});

หมายเหตุเครื่องหมายดอกจัน '*' จุดเริ่มต้นของตัวเลือกที่ตรงกับองค์ประกอบทั้งหมด

ดูแอตทริบิวต์ประกอบด้วย Selectorsเช่นเดียวกับ: visibleและ: hidden selectors


17
อาจจะคุ้มค่าที่จะกล่าวถึงว่าเมื่อจับคู่กับองค์ประกอบidคุณไม่ได้ใช้เครื่องหมายคำพูดซึ่งเมื่อจับคู่กับnameคุณ $('*[name*="myname"]:visible') ไม่เข้าใจง่ายที่สุดและเคยจับฉันมาก่อน
ficuscr

ฉันแทนที่ $ (this) .doStuff (); ด้วย this.doStuff (); และทำงาน
Carlos LópezMarí

133

หากคุณกำลังหาโดยมีแล้วมันจะเป็นอย่างนี้

    $("input[id*='DiscountType']").each(function (i, el) {
         //It'll be an array of elements
     });

หากคุณพบโดยเริ่มต้นด้วยก็จะเป็นเช่นนี้

    $("input[id^='DiscountType']").each(function (i, el) {
         //It'll be an array of elements
     });

หากคุณพบโดยEnds Withก็จะเป็นเช่นนี้

     $("input[id$='DiscountType']").each(function (i, el) {
         //It'll be an array of elements
     });

หากคุณต้องการเลือกองค์ประกอบที่id ไม่ใช่สตริงที่กำหนด

    $("input[id!='DiscountType']").each(function (i, el) {
         //It'll be an array of elements
     });

หากคุณต้องการเลือกองค์ประกอบที่ชื่อมีคำที่กำหนดคั่นด้วยช่องว่าง

     $("input[name~='DiscountType']").each(function (i, el) {
         //It'll be an array of elements
     });

หากคุณต้องการเลือกองค์ประกอบที่id เท่ากับสตริงที่กำหนดหรือเริ่มต้นด้วยสตริงนั้นตามด้วยยัติภังค์

     $("input[id|='DiscountType']").each(function (i, el) {
         //It'll be an array of elements
     });

สวัสดีฉันจะใช้ตัวเลือกเพื่อเลือกองค์ประกอบที่มี id เป็นของอาร์เรย์ได้อย่างไร
bpa.mdl

20

สิ่งนี้จะเลือก DIV ทั้งหมดที่มี ID ที่มี 'foo' และที่มองเห็นได้

$("div:visible[id*='foo']");

ถ้าฉันกำลังค้นหาองค์ประกอบ textbox แทนที่จะเป็น div มันเป็นเพียง $ ("input: visible [id * = 'foo']"); ?
user48408

มันจะเป็น $ ("input [type = 'textbox'] [id * = 'foo']: visible")
karim79

1
@ port-zero - คำพูดเดียวรอบ ๆ 'foo' ไม่จำเป็น
karim79

หากคุณพยายามรับค่าขององค์ประกอบ (ในกรณีของฉันครอบคลุม) คุณต้องได้รับ$(this)[0].innerText
Niklas

6

ขอบคุณทั้งสองท่าน สิ่งนี้ใช้ได้ผลอย่างสมบูรณ์สำหรับฉัน

$("input[type='text'][id*=" + strID + "]:visible").each(function() {
    this.value=strVal;
});
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.