2011-01-14 6 views
8

ich dynamisch laden in ein paar li's, die ein etikett und ein checkbox in ihnen zu einem anderen sichtbaren ul. Ich setze die Checkboxen auf checked = "checked" und ich versuche ein Ereignis auszulösen, wenn ich diese dynamisch eingefügten Checkboxen ändere, aber nichts passiert. Hierjquery dynamisch hinzugefügt checkbox nicht arbeiten mit change() funktion

ist die jquery:

$(".otherProductCheckbox:checkbox").change(function(){ 
    alert('test'); 
}); 

Hier ist der HTML-Code für die dynamisch hinzugefügt li:

<li class="otherProduct"><input type="checkbox" class="otherProductCheckbox radioCheck" checked="checked"/><label>Product Name</label></li> 

Jede Idee, warum ich die Warnung erhalten kann nicht geschehen, wenn das Kontrollkästchen seiner überprüft den Zustand ändert ?

Antwort

19

Sie müssen liveQuery oder live verwenden, um Ereignisse an dynamisch hinzugefügte Elemente zu binden.

$(".otherProductCheckbox:checkbox").live('change', function(){ 
    alert('test'); 
}); 

EDIT in IE zu umgehen, müssen Sie nicht

$(".otherProductCheckbox:checkbox").live('click', function(){ 
     alert('test'); 
}); 
+0

@Teja Kantamneni: Perfekt. Danke für die Richtung. Ich lerne immer noch die Besonderheiten von jQuery. – estern

+0

@stern froh ich kann dir helfen. –

+0

Sie müssen das nur tun, wenn die Elemente hinzugefügt werden ** nachdem ** der Event-Handler eingerichtet wurde. – Gareth

16

Seit live() is now deprecated als von jQuery 1.7 ändern verwenden klicken, dachte ich, ich würde die Lösung veröffentlichen, die auf für mich gearbeitet das gleiche Problem (Trigger-Ereignis, wenn dynamisch hinzugefügte Checkboxen geändert werden).

$(document).on('click', '.otherProductCheckbox', function() { 
    alert('test'); 
}); 
+0

document.getElementById ('id'). Live ('klick', funktion() { alert ('test'); }); Es funktioniert nicht für mich .. was "otherProductCheckbox" bedeutet hier? –