Vấn đề ở đây là "on" được áp dụng cho tất cả các phần tử tồn tại VÀO THỜI ĐIỂM. Khi bạn tạo động một phần tử, bạn cần chạy lại:
$('form').on('submit',doFormStuff);
createNewForm();
// re-attach to all forms
$('form').off('submit').on('submit',doFormStuff);
Vì biểu mẫu thường có tên hoặc ID, bạn cũng có thể đính kèm vào biểu mẫu mới. Nếu tôi đang tạo nhiều nội dung động, tôi sẽ bao gồm chức năng thiết lập hoặc liên kết:
function bindItems(){
$('form').off('submit').on('submit',doFormStuff);
$('button').off('click').on('click',doButtonStuff);
}
Vì vậy, sau đó bất cứ khi nào bạn tạo một cái gì đó (thường là các nút trong trường hợp của tôi), tôi chỉ cần gọi bindItems để cập nhật mọi thứ trên trang.
createNewButton();
bindItems();
Tôi không thích sử dụng các phần tử 'body' hoặc tài liệu vì với các tab và phương thức, chúng có xu hướng lơ lửng và làm những điều bạn không mong đợi. Tôi luôn cố gắng trở nên cụ thể nhất có thể trừ khi nó là một dự án 1 trang đơn giản.
$(document).on('submit','form.remember',function(){...})