Problem polega na tym, że „włączone” jest stosowane do wszystkich elementów, które istnieją W CZASIE. Gdy tworzysz element dynamicznie, musisz ponownie uruchomić on:
$('form').on('submit',doFormStuff);
createNewForm();
// re-attach to all forms
$('form').off('submit').on('submit',doFormStuff);
Ponieważ formularze zwykle mają nazwy lub identyfikatory, możesz również dołączyć je do nowego formularza. Jeśli tworzę dużo dynamicznych rzeczy, dołączę funkcję setup lub bind:
function bindItems(){
$('form').off('submit').on('submit',doFormStuff);
$('button').off('click').on('click',doButtonStuff);
}
Więc za każdym razem, gdy coś tworzysz (zwykle przyciski w moim przypadku), po prostu wywołuję bindItems, aby zaktualizować wszystko na stronie.
createNewButton();
bindItems();
Nie lubię używać elementów „body” lub document, ponieważ w przypadku zakładek i modali zwykle kręcą się i robią rzeczy, których się nie spodziewasz. Zawsze staram się być jak najbardziej konkretny, chyba że jest to prosty 1-stronicowy projekt.
$(document).on('submit','form.remember',function(){...})