หลายพารามิเตอร์สำหรับ jQuery selector?


112

ฉันเพิ่งดูปลั๊กอินปุ่ม jQueryUI และสังเกตเห็นสิ่งนี้

$("button, input:submit, a", ".demo").button();

ฉันไม่เคยเห็นอะไรแบบนี้ นี่เหมือนกับการเลือกหลายรายการในตัวเลือก jQuery เดียวหรือไม่?

คำตอบ:


172

อาร์กิวเมนต์ที่สอง ( ".demo"ในตัวอย่างของคุณ) คือบริบทโดยพื้นฐานแล้วตัวเลือกของคุณถูก จำกัด ให้จับคู่เฉพาะลูกหลานของบริบทที่กำหนด:

$(expr, context)

เทียบเท่ากับการใช้findวิธีการ:

$(context).find(expr)

ดูเอกสารของฟังก์ชัน jQuery :

บริบทตัวเลือก

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

$('div.foo').click(function() {
  $('span', this).addClass('bar');
  // it will find span elements that are
  // descendants of the clicked element (this)
});

โปรดสังเกตด้วยว่าตัวเลือกที่คุณโพสต์"button, input:submit, a"เรียกว่าตัวเลือกหลายตัวและคุณสามารถระบุตัวเลือกจำนวนเท่าใดก็ได้เพื่อรวมเป็นผลลัพธ์เดียวเพียงแค่คั่นด้วยเครื่องหมายจุลภาค


คูลไม่เคยรู้เรื่องนั้น เมื่อฉันต้องการ จำกัด การพูดเหมือนภาคคลาสดังนั้นมันจะไม่ค้นหาทั้งหน้าฉันเพิ่งทำบางอย่างเช่น $ ('# id .class')
chobo2

นั่นเป็นการย้อนกลับไปจากสิ่งที่คุณคิดว่ากำลังมองหาแหล่งที่มา ฉันคาดว่าอาร์กิวเมนต์แรกจะเป็นคลาสระดับสูงตามด้วยคลาสย่อยซึ่งทำให้แคบลง อืม.
light24bulbs

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