2011-01-11 2 views

Antwort

0

Zwei Möglichkeiten, es zu tun: Man ist wie oben unter Verwendung .live() oder Sie können die .click() Ereignis auf die Kontrollkästchen nach dem Ajax-Aufruf binden, z.B.

$.post('url/path', function(response) { 
    $('.checkboxes').click(function() { 
    //do stuff here 
    }); 
}); 

Die .live() Methode ist einfach, aber es hat seine Grenzen nämlich das Ereignis Einschränkungen sprudeln, wo sie sich weigert normalerweise Ereignisse zu verbreiten.

+0

es verhält sich immer noch merkwürdig, wenn ich auf das zweite Kontrolle-Kästchen klicke, das es entweder abhebt oder das andere Ankreuzfeld überprüft –

+0

ich tue die Weise, die du erwähntest, aber das Problem ist mit dem ersten Kontrolle-Kästchen, das es immer angekreuzt wird Ich kreuze ein anderes Kontrollkästchen in der Tabelle an. –

+0

könnten Sie ein Beispiel von dem, was Sie tun, veröffentlichen? Oder erläutern Sie genauer, was Sie erreichen möchten? Bitte posten Sie auch den genauen Code, den Sie oben versucht haben. – Populus

0

Sie können dafür das Ereignis .live() verwenden. Weisen Sie den dynamisch generierten Ankreuzfeldern eine Klasse zu und verwenden Sie den folgenden Code.

$("#yourtableid input:checkbox.checkboxclass").live("click", function(){ 
    // to get the parent row 
    var row = $(this).closest("tr"); 
    // to prevent event bubbling 
    return false; 
}); 
+0

Ist dies die Standardmethode für den Zugriff auf alle Felder, die über AJAX aufgerufen werden? Wenn ja dann danke vielmals hast du mein Problem gelöst. Wenn es mehr gibt, fügen Sie bitte hinzu. –

+0

'.live()' fügt Ereignishandler an alle dynamisch generierten Elemente an. – rahul

+0

können Sie mir bitte helfen zu denken, wie kann ich die ganze Reihe von Eingabefeldern zuordnen durch Ajax mit diesem Kontrollkästchen, so dass, wenn das Kontrollkästchen mit der .live() -Methode angeklickt grabs die ganze Zeile ?? –

2

Ich würde Sie empfehlen, verwenden Sie die delegate Funktion stattdessen der Vorteil ist es, das Gewicht reduziert eine click Handler jede Checkbox des Hinzufügens und ist nicht betroffen, wenn neue Zeilen dynamisch oder nicht erstellt, anstatt es zu dem hinzufügt ganze Tisch und wenn Sie darauf klicken, dann findet sie heraus, welche Kontrollkästchen Sie geklickt haben, müssen Sie nur eine leere Tabelle zum Beispiel

<table id="my_table"> 
</table> 

dann haben müssen, wenn Sie die neuen Zeilen anhängen können. Und Ihr Klickereigniscode sollte in etwa so aussehen:

Verwandte Themen