2016-04-08 5 views
1

Ich entwarf eine dynamische Tabelle, die Benutzer mehr Zeile hinzufügen kann. und es gibt eine Funktion .change() auf einen Eingang für die erste Reihe seinen Lauf, aber für die nächste (geklont) Elemente wird die Funktion laufen nichtJavaScript-Funktion .change() nicht auf geklonten Element ausgeführt

meine Geige ist here

der Code wie folgt

$(document).ready(function(){ 
$("#btnAddItemAssignee").click(function(e){ 
    e.preventDefault();   
    $(".oAssignee:last").clone().insertAfter(".oAssignee:last"); 
    $(".oAssignee:last").find("#txtAssigneeType").val(""); 
    $(".oAssignee:last").find("#txtAssigneeId").val(""); 
}); 
}); 

$("body #txtAssigneeType").change(function(){ 
if ($(this).val()=="Individu") 
{ 
    console.log($("body #txtAssigneeType").length); 
    alert("call me");  
} 
}); 
+1

https://jsfiddle.net/rayon_1990/qp45z2f2/1/ – Rayon

+2

Lesen Sie mehr über [ 'Ereignis delegation'] (https://learn.jquery.com/events/event-delegation /) – Rayon

+2

__ID muss eindeutig sein__ – Rayon

Antwort

-1

fand ich die Lösung, muss es true innen .clone(true) hinzugefügt werden.

+1

Ja passing true als Parameter klont es sowohl Daten als auch Ereignisse. –

0

ersetzen $(".oAssignee:last").clone().insertAfter(".oAssignee:last");

mit

$(".oAssignee:last").clone("true").insertAfter(".oAssignee:last"); 

Demo

0

Es ist, weil Sie dieselbe ID für alle Drop-down verwenden .. #txtAssigneeType .. es ändern, wenn Sie eine neue Gruppe hinzufügen ..

zB: add Zufalls id # txtAssigneeType1, #txtAssignee Type2, # txtAssigneeType3

0

.clone() akzeptiert zwei Argumente. Der erste ist für "withDataAndEvents" und der zweite ist für "deepWithDataAndEvents".

Beide Werte sind standardmäßig falsch.

Ändern Sie Ihre Aussage zu diesem und es klont die Daten sowie Ereignisse.

$(".oAssignee:last").clone(true).insertAfter(".oAssignee:last"); 

https://api.jquery.com/clone/

Verwandte Themen