Das Problem hierbei ist, dass das "Ein" auf alle Elemente angewendet wird, die zu diesem Zeitpunkt vorhanden sind. Wenn Sie ein Element dynamisch erstellen, müssen Sie das on erneut ausführen:
$('form').on('submit',doFormStuff);
createNewForm();
// re-attach to all forms
$('form').off('submit').on('submit',doFormStuff);
Da Formulare normalerweise Namen oder IDs haben, können Sie sie auch einfach an das neue Formular anhängen. Wenn ich viele dynamische Dinge erstelle, füge ich eine Setup- oder Bindefunktion hinzu:
function bindItems(){
$('form').off('submit').on('submit',doFormStuff);
$('button').off('click').on('click',doButtonStuff);
}
Wenn Sie also etwas erstellen (in meinem Fall normalerweise Schaltflächen), rufe ich einfach bindItems auf, um alles auf der Seite zu aktualisieren.
createNewButton();
bindItems();
Ich mag es nicht, 'Körper'- oder Dokumentelemente zu verwenden, weil sie bei Registerkarten und Modalitäten dazu neigen, herumzuhängen und Dinge zu tun, die Sie nicht erwarten. Ich versuche immer, so spezifisch wie möglich zu sein, es sei denn, es ist ein einfaches 1-Seiten-Projekt.
$(document).on('submit','form.remember',function(){...})