2013-08-31 16 views
56

Ich habe ein Problem mit .on() bekam. Ich habe mehrere Formularelemente (Formulare mit class="remember"), auch ich ein weiteres form.remember mit AJAX hinzufügen. So , will ich es Ereignis etwas wie behandeln einreichen:JQuery .on() einreichen Ereignis

$('form.remember').on('submit',function(){...}) 

aber bilden hinzugefügt mit AJAX ist nicht mit ihm arbeiten.

Wo ist das Problem? Ist es ein Fehler?

+9

Try '$ (document) .auf ('submit', 'form.remember', function() {...})' – Sergio

Antwort

131

Sie müssen

Ereignis Dokumentebene delegieren
$(document).on('submit','form.remember',function(){ 
    // code 
}); 

$('form.remember').on('submit' Arbeit gleiche wie $('form.remember').submit( aber wenn man $(document).on('submit','form.remember' verwenden, dann wird es auch funktionieren, für den DOM später hinzugefügt.

+16

auch beachten, dass '$ (document) .on' hat eine viel geringere Leistung als' $ ('form.remember'). on ('submit''. Es muss nun nach ** all ** Ereignissen im Dokument suchen. Es ist viel besser ., den Umfang ein wenig als hören '' on' document', wenn möglich – Liam

+2

$ ('body') auf ('Senden', 'form.remember', function() {// Code }) zu beschränken; gelöst mein Problem –

12

hatte ich ein Problem mit den gleichen Symptomen. In meinem Fall stellte sich heraus, dass meine Submit-Funktion die "Return" -Anweisung fehlte.

Zum Beispiel:

$("#id_form").on("submit", function(){ 
    //Code: Action (like ajax...) 
    return false; 
}) 
+0

Ich hatte ein ähnliches Problem, ich hatte zwei oder mehr Formen, und jede Form musste ich etwas AJAX-Aktion machen. Wenn ich auf die Schaltfläche "Enter" klicke, wurde die Ajax-Aktion nicht –

+0

Ok aufgerufen. Ich bearbeite die Antwort. Ich denke, mein Zweck war gut, aber der Weg, es zu zeigen, war es nicht. Vielen Dank –