ตั้งแต่ jQuery 1.7คุณควรใช้jQuery.fn.on
:
$(staticAncestors).on(eventName, dynamicChild, function() {});
ก่อนหน้านี้แนวทางที่แนะนำคือการใช้live()
:
$(selector).live( eventName, function(){} );
อย่างไรก็ตามlive()
ถูกคัดค้านใน 1.7 เพื่อสนับสนุนon()
และถูกลบอย่างสมบูรณ์ใน 1.9 live()
ลายเซ็น:
$(selector).live( eventName, function(){} );
... สามารถแทนที่ด้วยon()
ลายเซ็นต่อไปนี้:
$(document).on( eventName, selector, function(){} );
ตัวอย่างเช่นหากหน้าของคุณสร้างองค์ประกอบแบบไดนามิกด้วยชื่อคลาสdosomething
คุณจะผูกเหตุการณ์กับผู้ปกครองที่มีอยู่แล้ว (นี่คือปัญหาของที่นี่คุณต้องมีสิ่งที่มีอยู่เพื่อผูกไม่ผูกกับ เนื้อหาแบบไดนามิก) นี้สามารถ (และตัวเลือกที่ง่ายที่สุด) document
เป็น แม้ว่าหมีในใจอาจจะไม่ได้เป็นตัวเลือกที่มีประสิทธิภาพมากที่สุดdocument
$(document).on('mouseover mouseout', '.dosomething', function(){
// what you want to happen when mouseover and mouseout
// occurs on elements that match '.dosomething'
});
ผู้ปกครองใด ๆ ที่มีอยู่ในเวลาที่เหตุการณ์ถูกผูกไว้ก็ใช้ได้ ตัวอย่างเช่น
$('.buttons').on('click', 'button', function(){
// do something here
});
จะนำไปใช้กับ
<div class="buttons">
<!-- <button>s that are generated dynamically and added here -->
</div>