ปัญหาคือ "เปิด" จะใช้กับองค์ประกอบทั้งหมดที่มีอยู่ในเวลานั้น เมื่อคุณสร้างองค์ประกอบแบบไดนามิกคุณต้องเรียกใช้อีกครั้ง:
$('form').on('submit',doFormStuff);
createNewForm();
// re-attach to all forms
$('form').off('submit').on('submit',doFormStuff);
เนื่องจากแบบฟอร์มมักจะมีชื่อหรือรหัสคุณสามารถแนบกับแบบฟอร์มใหม่ได้เช่นกัน หากฉันกำลังสร้างสิ่งที่มีไดนามิกจำนวนมากฉันจะรวมฟังก์ชันการตั้งค่าหรือการผูก:
function bindItems(){
$('form').off('submit').on('submit',doFormStuff);
$('button').off('click').on('click',doButtonStuff);
}
ดังนั้นเมื่อใดก็ตามที่คุณสร้างบางสิ่งบางอย่าง (ปุ่มมักจะอยู่ในกรณีของฉัน) ฉันก็โทรไปที่ bindItems เพื่ออัปเดตทุกอย่างบนหน้า
createNewButton();
bindItems();
ฉันไม่ชอบใช้ "ร่างกาย" หรือองค์ประกอบของเอกสารเพราะด้วยแท็บและวิธีการต่างๆพวกเขามักจะไปไหนมาไหนและทำในสิ่งที่คุณไม่คาดคิด ฉันพยายามที่จะเจาะจงให้มากที่สุดเท่าที่จะทำได้เว้นแต่จะเป็นโครงการ 1 หน้าธรรมดา
$(document).on('submit','form.remember',function(){...})