jquery $ คืนค่าอะไร?


113

ฉันต้องอ่านเอกสาร JQuery และในขณะที่ความสนใจมากจะทุ่มเทให้กับสิ่งที่คุณควรผ่านฟังก์ชั่นที่ผมไม่เห็นข้อมูลใด ๆ เกี่ยวกับสิ่งที่มันเป็นจริงผลตอบแทน

โดยเฉพาะอย่างยิ่งมันส่งคืนอาร์เรย์เสมอแม้ว่าจะพบเพียงองค์ประกอบเดียว? มันส่งคืนค่าว่างเมื่อไม่พบอะไร? เอกสารนี้อยู่ที่ไหน

ฉันเข้าใจว่าเมธอด jquery สามารถนำไปใช้กับค่าส่งคืนได้ แต่ถ้าฉันต้องการเพียงแค่ใช้ค่าส่งคืนโดยตรงล่ะ

คำตอบ:


76

จากคำอธิบายของ Rick Strahl :

jQuery Object: The Wrapped Set: Selectors ส่งคืนอ็อบเจ็กต์ jQuery ที่เรียกว่า "ชุดที่ถูกห่อ" ซึ่งเป็นโครงสร้างคล้ายอาร์เรย์ที่มีองค์ประกอบ DOM ที่เลือกทั้งหมด คุณสามารถวนซ้ำชุดที่ห่อไว้เช่นอาร์เรย์หรือเข้าถึงแต่ละองค์ประกอบผ่านตัวสร้างดัชนี (ตัวอย่างเช่น $ (sel) [0]) ที่สำคัญคุณยังสามารถใช้ฟังก์ชัน jQuery กับองค์ประกอบที่เลือกทั้งหมดได้อีกด้วย

เกี่ยวกับการคืนสินค้า:

มันส่งคืนอาร์เรย์เสมอหรือไม่? มันกลับเป็นโมฆะ?

คุณจะได้รับสิ่งเดียวกันกลับมาเสมอไม่ว่าจะมีเนื้อหาที่เป็นคำถามหรือไม่ก็ตาม โดยทั่วไปคุณสามารถตรวจสอบได้โดยใช้. val () (เช่น $ ('. myElem'). val ())


1
เยี่ยมมากขอบคุณ ... สิ่งนี้มีประโยชน์มาก ฉันไม่รู้ว่าวัตถุที่ผู้ใช้กำหนดเองในเวลาเดียวกันอาจเป็น "อาร์เรย์" ได้ - ฉันเดาว่านั่นคืออัจฉริยะของ jquery
harpo

ยินดีต้อนรับ - ฉันเพิ่งแก้ไขและเพิ่มลิงก์ฉบับเต็มไปยังบทความของ Rick Strahl - เป็นการอ่านที่ดี
Ian Robinson

14
สำหรับคำถามที่ทำให้ฉันมาที่นี่คือคุณจะตรวจสอบได้อย่างไรว่าพบสิ่งใดหรือไม่ฉันไปด้วย$ (query) .lengthซึ่งดูเหมือนจะทำเคล็ดลับ
harpo

3
อาร์เรย์เช่น set คืออะไร .... มันคืออาร์เรย์หรือวัตถุหรือ? ... เราจะแม่นยำได้หรือไม่

26

มันไม่ส่งคืนอาร์เรย์ แต่จะส่งคืนวัตถุ jQuery วัตถุ jQuery คือสิ่งที่มีเมธอด jQuery พิเศษทั้งหมด

มันไม่ส่งคืนค่าว่างหรือประเภทอื่น หากพบองค์ประกอบหนึ่งวัตถุ jQuery จะมีลูกเพียงคนเดียว หากไม่พบองค์ประกอบวัตถุ jQuery จะว่างเปล่า


6

ฟังก์ชัน jQuery (เช่น " $") จะส่งคืนวัตถุ jQuery ในทุกอินสแตนซ์เสมอ


4
@harpo: ไม่เลย; เพียงแค่ว่าวัตถุที่เป็นปัญหานั้นตั้งชื่อไม่ดี "วัตถุ jQuery" หรือที่เรียกว่า$"a jQuery Object" หรือที่เรียกว่า "ชุดห่อ"
Sean McMillan

5

ตามที่ผู้ตอบรายอื่นกล่าวถึงมันจะส่งคืนวัตถุ jQuery เสมอ

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

หากคุณต้องการใช้วัตถุที่ส่งคืน "โดยตรง" เช่นเดียวกับในฐานะองค์ประกอบธรรมดาคุณสามารถดำเนินการอย่างใดอย่างหนึ่งต่อไปนี้:

$('selector')[0] // element
$('selector').get(0) // element
$('selector').length // number of elements in the array

3

จากเอกสาร jQuery :

วัตถุ jQuery ทำงานเหมือนอาร์เรย์ มันมีคุณสมบัติความยาวและองค์ประกอบในวัตถุสามารถเข้าถึงได้ด้วยดัชนีตัวเลข [0] ถึง [ความยาว -1] โปรดสังเกตว่าวัตถุ jQuery ไม่ใช่วัตถุ Javascript Array ดังนั้นจึงไม่มีวิธีการทั้งหมดของวัตถุ Array ที่แท้จริงเช่น join ()


2

ข้อเท็จจริงที่ว่า $ () ส่งคืนฟังก์ชัน jQuery เสมอช่วยให้คุณสามารถเชื่อมต่อฟังก์ชัน jQuery ที่เรียกใช้อย่างรอบคอบ


1
ถาม! $()ไม่ส่งคืนฟังก์ชัน jQuery (ซึ่งก็คือ$ตัวมันเอง) แต่จะส่งคืนชุดที่ห่อด้วยวิธีการที่เป็นประโยชน์ทั้งหมด
Sean McMillan

1

jquery selector mechnism

$("..") ตัวเลือก jquery ใช้เพื่อเลือกองค์ประกอบที่ตรงกัน

ส่งคืนค่า

มันจะส่งคืนวัตถุ jquery เหมือนอาร์เรย์เสมอซึ่งมีlengthคุณสมบัติ

วิธีการโทรบนวัตถุ jquery ที่ส่งคืน

สามารถเรียกวิธีการของ jquery บนวัตถุและนำไปใช้กับองค์ประกอบที่เลือกเหล่านั้น

เข้าถึงองค์ประกอบดั้งเดิมด้วยดัชนี

องค์ประกอบที่เลือกจะเก็บไว้เป็นทรัพย์สินของวัตถุชื่อทรัพย์สินของพวกเขาจะได้ตัวเลขดัชนีเริ่มต้นจาก 0,
จึงสามารถเข้าถึงได้โดยดัชนีเริ่มต้นจาก 0, หลังจากได้รับองค์ประกอบเดิมคุณสามารถรักษามันราวกับว่าได้รับโดย
document.getElementXxx()

รวมองค์ประกอบดั้งเดิมเข้ากับวัตถุ jquery

หลังจากที่ได้รับองค์ประกอบเดิมคุณสามารถห่อให้เป็นวัตถุ jQuery โดยเรียก$(originalEle),
จากนั้นคุณสามารถเรียกวิธี jQuery บนวัตถุห่อ


0

ตาม firebug จะส่งคืนอาร์เรย์ของวัตถุที่ตรงกับตัวเลือกของคุณ แต่อาร์เรย์นี้เป็นวัตถุ jQuery ซึ่งมีวิธีการมากกว่า Array ธรรมดา


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