Tengo un problema con .on(). Tengo múltiples elementos de formulario (formularios con class="remember"), también agrego otro form.rememberusando AJAX. Entonces, quiero que maneje el evento de envío de algo como:
$('form.remember').on('submit',function(){...})
pero el formulario agregado con AJAX no funciona con él.
¿Dónde está el problema? ¿Es un error?

$(document).on('submit','form.remember',function(){...})documentcon el padre estático más cercano.Respuestas:
Necesitas delegar el evento al nivel del documento.
$('form.remember').on('submit'funciona igual que,$('form.remember').submit(pero cuando lo use$(document).on('submit','form.remember', también funcionará para el DOM agregado más adelante.fuente
$(document).ontiene un rendimiento mucho menor que$('form.remember').on('submit'. Ahora tiene que escuchar todos los eventos de envío en el documento. Es mucho mejor restringir un poco el alcance que escucharondocument, si es posibleTuve un problema con los mismos síntomas. En mi caso, resultó que a mi función de envío le faltaba la declaración "return".
Por ejemplo:
fuente
return false;no enviará el formulario. Para enviar el formulario utilicereturn true;.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:
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:
Entonces, cada vez que crea algo (botones generalmente en mi caso), simplemente llamo a bindItems para actualizar todo en la página.
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.
fuente