2009-03-13 10 views
1

Ich habe ein Formular, das über XHR eingeführt wird, und ich muss in der Lage sein, ein Ereignis darauf zu binden, für submit. Ich habe das Plugin jquery.form.js heruntergeladen. Was ist der beste Weg, um eine späte Bindung so auszuführen, dass ich etwas wie zu tun: da die Form nicht ohne weiteres verfügbarWie spätes Binden mit jQuery?

$(document).ready(function() { 
     // bind 'myForm' and provide a simple callback function 
     $('#myForm').ajaxForm(function() { 
      alert("Thank you for your comment!"); 
     }); 
    }); 

Leider ist, wenn der DOM erste bevölkert, wird dies nicht funktionieren.

** EDIT **

Ich habe in das Formular versucht verbindlich, nachdem sie über XHR abgerufen und haben nicht viel Glück gehabt. So sieht es aus:

$.get("foo.php", function(data) { 
    $('#my_form').ajaxForm(function() { 
     alert("Thank you for your comment!"); 
    }); 
});  

Antwort

1

Ich denke, du machst es nicht richtig. Die Art, wie ich jquery-Formulare verwende, lautet:

Sie rufen dies, nachdem das Formular in DOM injiziert wird. Ein anderer Weg, dies zu tun ist, um mit live aus der Bindung jquery

$('#myform').live('submit', function(){ 
$(this).ajaxSubmit(function(){ 
    alert('Thanks for your comment'); 
}); 
return false 
}); 

Jede Art und Weise Sie wählen, müssen Sie dieses Stück Code enthalten in $(document).ready()

+0

Danke, das hat den Trick – Coocoo4Cocoa

+0

jQuery docs hat gesagt, dass live() beim Senden nicht unterstützt wird. –

0

Führen Sie die Bindung für den Rückruf der XHR-Anforderung durch.

+0

Ich habe es versucht, verbindlich, wenn sie bereits zurück gebracht wurde in das DOM ohne viel Glück. – Coocoo4Cocoa

2

jQuery 1.3 eingeführt "Live" events, die an jedes aktuelle und zukünftige Element durch einen Selektor definiert binden wird.

Ich habe nichts mit ihnen gemacht, aber es scheint vernünftig, dass Sie in der Lage sein sollten, wie etwas zu tun:

$(document).ready(function() { 
    $('form').live("ready",function() { 
     alert("Something"); 
    }); 
}); 

Nicht sicher, ob das Ereignis ready in diesem Fall tatsächlich funktionieren würde, scheint aber wert ein Schuss.

0

Binden Sie das Ereignis unmittelbar nach dem Laden des Formulars über XHR.

Verwandte Themen