El problema aquí es que el "on" se aplica a todos los elementos que existen EN EL MOMENTO. Cuando crea un elemento dinámicamente, debe ejecutar de nuevo:
$('form').on('submit',doFormStuff);
createNewForm();
// re-attach to all forms
$('form').off('submit').on('submit',doFormStuff);
Dado que los formularios suelen tener nombres o ID, también puede adjuntarlos al nuevo formulario. Si estoy creando muchas cosas dinámicas, incluiré una función de configuración o vinculación:
function bindItems(){
$('form').off('submit').on('submit',doFormStuff);
$('button').off('click').on('click',doButtonStuff);
}
Entonces, cada vez que crea algo (botones generalmente en mi caso), simplemente llamo a bindItems para actualizar todo en la página.
createNewButton();
bindItems();
No me gusta usar 'cuerpo' o elementos de documento porque con pestañas y modales tienden a quedarse y hacer cosas que no esperas. Siempre trato de ser lo más específico posible a menos que sea un proyecto simple de 1 página.
$(document).on('submit','form.remember',function(){...})