inputTabTitle: function(){
origin = template.clone();
$("#inputTabCount").change(function(){
tabcount = parseInt($("#inputTabCount").val());
if(tabcount > 0){
tab = origin.find("label").text();
for(i = 1; i <= tabcount; i ++){
origin.find("label").text(tab + i);
origin.find("label").attr("for", "inputTabTitle" + i);
origin.find("input").attr("id", "inputTabTitle" + i);
$("#tabCount").append(origin);
}
}
})
}
设置n = 3
当附加到“#tabCount”时,只有一个元素插入,实际上应该是三个。但是这个代码追加执行就像替换。为什么? 当我在循环结束之前添加“origin = origin.clone()”时,它运行良好,插入了三个元素。
答案 0 :(得分:0)
您只能克隆一次模板。这意味着:两次将“原点”附加到已经存在的地方。 为了获得,你想要的(或者我认为你想要的),克隆必须在循环中。
当你定义诸如'tabcount'之类的变量而没有'var'时,请进一步注意污染GLOBAL空间。我也在你的源代码中解决了这个问题。
重写下面的功能。 但要注意:每次值更改时都会插入标签数量。这意味着:
inputTabTitle: function(){
$("#inputTabCount").change(function(){
var tabcount = parseInt($("#inputTabCount").val());
if(tabcount > 0){
tab = template.find("label").text();
for(i = 1; i <= tabcount; i ++){
var origin = template.clone();
origin.find("label").text(tab + i);
origin.find("label").attr("for", "inputTabTitle" + i);
origin.find("input").attr("id", "inputTabTitle" + i);
$("#tabCount").append(origin);
}
}
})
}