มีคำตอบมากมายซึ่งแต่ละข้อจะสัมผัสกับประเด็นต่างๆ - หวังว่านี่จะสามารถให้คำตอบของคุณพร้อมคำอธิบายที่ดีว่าอะไรคือสิ่งที่จะใช้
การใช้click()เป็นนามแฝงbind('click' ...)ของ การใช้bind()จะใช้ DOM เหมือนเดิมเมื่อมีการตั้งค่าตัวฟังเหตุการณ์และผูกฟังก์ชันกับแต่ละองค์ประกอบที่ตรงกันใน DOM กล่าวคือหากคุณใช้$('a').click(...)คุณจะผูกฟังก์ชันที่ให้มากับเหตุการณ์การคลิกของทุกแท็กจุดยึดใน DOM ที่พบเมื่อโค้ดนั้นทำงาน
ใช้live()เป็นวิธีเก่าใน jQuery; มันถูกใช้เพื่อเชื่อมโยงเหตุการณ์เช่นเดียวกับที่bind()ทำ แต่ไม่เพียงผูกเข้ากับองค์ประกอบใน DOM เมื่อโค้ดทำงานเท่านั้น แต่ยังรับฟังการเปลี่ยนแปลงใน DOM และจะเชื่อมโยงเหตุการณ์กับองค์ประกอบที่จับคู่ในอนาคตด้วย สิ่งนี้มีประโยชน์หากคุณกำลังดำเนินการจัดการ DOM และคุณต้องการให้มีเหตุการณ์อยู่ในองค์ประกอบบางอย่างที่อาจถูกลบ / อัปเดต / เพิ่มไปยัง DOM ในภายหลัง แต่จะไม่มีเมื่อโหลด DOM ครั้งแรก
สาเหตุที่live()คิดค่าเสื่อมราคาในขณะนี้เนื่องจากมีการใช้งานไม่ดี ในการใช้งานlive()คุณต้องสามารถเลือกอย่างน้อยหนึ่งองค์ประกอบใน DOM ในตอนแรก (ฉันเชื่อว่า) นอกจากนี้ยังทำให้สำเนาของฟังก์ชันทำงานถูกผูกไว้กับแต่ละองค์ประกอบ - และถ้าคุณมี 1,000 องค์ประกอบนั่นคือฟังก์ชันที่คัดลอกจำนวนมาก
การสร้างon()ฟังก์ชันคือการเอาชนะปัญหาเหล่านั้น ช่วยให้คุณเชื่อมโยงตัวฟังเหตุการณ์เดียวกับวัตถุที่จะไม่เปลี่ยนแปลงใน DOM (ดังนั้นคุณจึงไม่สามารถใช้on()กับองค์ประกอบที่จะถูกลบ / เพิ่มไปยัง DOM ในภายหลังได้ - ผูกเข้ากับวัตถุหลัก) และใช้ องค์ประกอบ "ตัวกรอง" เพื่อให้ฟังก์ชันทำงานเฉพาะเมื่อมีการทำให้ฟองขึ้นอยู่กับองค์ประกอบที่ตรงกับตัวเลือก ซึ่งหมายความว่าคุณมีเพียงฟังก์ชันเดียวที่มีอยู่ (ไม่ใช่สำเนาจำนวนมาก) ที่เชื่อมโยงกับองค์ประกอบเดียวซึ่งเป็นแนวทางที่ดีกว่ามากในการเพิ่มเหตุการณ์ "สด" ใน DOM
... และนั่นคือความแตกต่างและเหตุใดแต่ละฟังก์ชันจึงมีอยู่และทำไมจึงlive()คิดค่าเสื่อมราคา
onไปclickเพราะclickเป็นเสียงชื่อฟังก์ชันเช่นคำกริยาการกระทำเมื่อสิ่งที่มันไม่เป็นไม่ได้ที่จะคลิกองค์ประกอบ (เช่นคุณยังสามารถทำแบบเดียวกับclickฟังก์ชั่น)