jQuery: เลือกแอตทริบิวต์ข้อมูลที่ไม่ว่างเปล่า?


96

ฉันกำลังพยายามเลือกองค์ประกอบทั้งหมดที่มีdata-go-toแอตทริบิวต์ที่ไม่ว่างเปล่า

ฉันได้ลองแล้ว$('[data-go-to!=""]')แต่แปลกพอที่จะเลือกทุกองค์ประกอบในหน้าถ้าฉันทำอย่างนั้น

คำตอบ:


77

ลอง

$(':not([data-go-to=""])')

อัพเดท:

เพื่อไม่ให้ใครหลงทางคำตอบนี้จะใช้ได้กับ jQuery เวอร์ชันเก่ากว่า แต่ไม่สามารถพิสูจน์ได้ในอนาคต เนื่องจากคำตอบของ @gmo และ @ siva ทั้งคู่ดูเหมือนจะใช้ได้กับรุ่นที่ใหม่กว่าฉันจึงเลื่อน (และขอแนะนำให้คุณโหวต) คำตอบของพวกเขา .... และแน่นอนว่าคุณจะมีวันที่ยอดเยี่ยม


ขอบคุณมันใช้งานได้ดีมาก! ฉันต้องการเลือกเฉพาะองค์ประกอบภาพดังนั้นฉันจึงเพิ่ม $ (': not (img [data-go-to == ""]')
msanjay

2
นี่ไม่ได้เลือกองค์ประกอบทั้งหมดที่ไม่มีแอตทริบิวต์ "data-to-go" ที่ว่างเปล่าใช่หรือไม่ เมื่อผู้ถามต้องการให้องค์ประกอบทั้งหมดที่มีแอตทริบิวต์นั้นไม่ว่างเปล่า? (ตามคำตอบของศิวะจรัล)
rodnaph

ไม่จำเป็นต้องมีเครื่องหมายอัญประกาศคู่ใด ๆ เช่นเดียวกับ$('element:not([attribute=])'); // gets all of <element attribute="">หรือ$(':not([attribute=])'); // gets all of <* attribute="">
Anthony Hatzopoulos

2
สิ่งนี้ได้รับทุกองค์ประกอบสำหรับฉันรวมถึงองค์ประกอบที่มี data-attribute ที่ฉันกำลังมองหา
Devil's Advocate

ดูเหมือนจะไม่ทำงานใน Safari แต่$('[data-go-to!=""]:[data-go-to]')ทำได้
แดน

190

เช่นเดียวกับการอ้างอิงเพิ่มเติมและข้อมูลล่าสุด (พ.ค. 57) (ส.ค. 15) (ก.ย. 59) (เม.ย. 60) (มี.ค. 61) (มี.ค. 62) ( พ.ค. 2563 ) ...
คำตอบที่ใช้ได้กับ:

สตริงว่าง:

หากต้องมีอยู่และอาจมีค่าใด ๆ(หรือไม่มีเลย)attr

    jQuery("[href]");

ไม่มีแอตทริบิวต์:

ถ้าสามารถที่มีอยู่และถ้าอยู่จะต้องมีค่าบางอย่าง attr

    jQuery("[href!='']");

หรือทั้งคู่:

ถ้าต้องมีอยู่ & ต้องมีค่า ... attr

    jQuery("[href!=''][href]");

PS : สามารถผสมได้มากขึ้น ...


ตรวจสอบการทดสอบนี้ในjsFiddleเพื่อดูตัวอย่าง:


หรือที่นี่ใน SO พร้อมข้อมูลโค้ดนี้

* Snippet กำลังเรียกใช้ jQuery v2.1.1


6
นี่ไง. โหวตผู้ใช้รายนี้ที่นี่ คำตอบที่เก่ากว่าอื่น ๆ ไม่ได้ผลสำหรับฉัน ฉันใช้ตัวอย่างที่สาม
Valamas

ที่สอง @ Valamas-AUS
Adam Waite

แก้ไข: เพิ่ม SO Code Snippet เพื่อให้คุณสามารถทดสอบได้ที่นี่
gmo

นี่คืออันที่ใช้งานได้ $(':not([data-go-to=""])')ไม่ทำงานอีกต่อไป
Matthieu Charbonnier

1
ขอขอบคุณที่ทำให้คำตอบเป็นปัจจุบัน
Anthony C

19
$('[data-go-to!=""]:[data-go-to]').each(function() {
    // Do Your Stuff
});​

6
อันนี้ใช้ได้กับสตริงว่างและแอตทริบิวต์ที่ขาดหายไปสมบูรณ์แบบ
adamJLev

4
ณ วันที่ 14 พฤษภาคมไม่ทำงานให้Unrecognized Expressionข้อผิดพลาด
coding_idiot

7

มี 'data-attributename' และค่าไม่ว่างเปล่า:

$('[data-attributename]:not([data-attributename=""])')

มี "data-attributename" ว่างเปล่าหรือไม่:

$('[data-attributename]')

ตัวอย่าง JS Fiddle


1
นี่เป็นคำตอบเดียวที่ยังใช้ได้กับฉันในเดือนมิถุนายน 2015
AlexioVay




2
$('[data-go-to]').filter(function() {
    return $(this).data('go-to')!="";
});

การใช้:not, .not(), :emptyฯลฯ เพียง แต่จะตรวจสอบว่าองค์ประกอบของตัวเองเป็นที่ว่างเปล่าไม่แอตทริบิวต์ข้อมูล สำหรับสิ่งนั้นคุณจะต้องกรองตามค่าแอตทริบิวต์ข้อมูล

ซอ




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