javascript函数.change()不在克隆元素上运行

时间:2016-04-08 06:15:45

标签: javascript jquery

我设计了一个动态表,用户可以添加更多行。 并且在输入上有一个函数.change() 对于它的第一行运行,但对于下一个(克隆的)元素,该函数不运行

我的小提琴是here

代码如下

$(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");       
}
});

4 个答案:

答案 0 :(得分:0)

替换$(".oAssignee:last").clone().insertAfter(".oAssignee:last");

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

Demo

答案 1 :(得分:0)

这是因为您为所有下拉列表使用相同的ID .. #txtAssigneeType ..在添加新组时更改它..

例如:添加随机ID      #txtAssigneeType1,      #txtAssigneeType2,      #txtAssigneeType3

答案 2 :(得分:0)

.clone()接受两个论点。第一个用于"withDataAndEvents",第二个用于"deepWithDataAndEvents"

默认情况下,这两个值均为false。

将您的陈述更改为此,它将克隆数据和事件。

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

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

答案 3 :(得分:-1)

我找到了解决方案,必须在true内添加.clone(true)