每次克隆时,addClass都会追加

这是我的剧本

var newclass = 0; jQuery("#addexperience").click(function(){ $("#expclone").clone().find("input:text").val("").end().prependTo( ".exp_clone" ); $(".ongoing").each(function(){ $(".ongoing").addClass("newclass"+newclass); newclass++; }); }); 

我想克隆一个特殊的div,并在克隆元素上添加一个类。 但每次追加addClass,

意味着在第一个克隆中添加了:newclass1,在第二个克隆中添加了:newclass1 newclass2; 等……

我想在第二个克隆中只使用newclass2,在thire clone中只需要newclass3等等。

你应该在.each的回调中使用$(this)

 $(".ongoing").each(function(){ $(this).addClass("newclass"+newclass); newclass++; }); 

或者你甚至不需要变量newclass.addClass接受一个函数作为参数:

 $(".ongoing").addClass(function(index) { // index is start from 0 return "newclass" + (index + 1); }); 

这是因为每次克隆元素时,它都会将类添加到每个元素中,即使它已经存在。 你所做的是,克隆元素后,获取最后一个克隆元素和addClass 。 删除.each()函数并尝试:

 $(".ongoing").last().addClass('newClass'+newclass); newclass++; 

改变这一行:

 $(".ongoing").addClass("newclass"+newclass); 

至:

 $(".ongoing").removeClass().addClass("newclass"+newclass); 

它将删除所有以前的.ongoing类并在其中添加新类。 如果你想拥有.ongoing类,那么尝试这样:

 $(".ongoing").removeClass().addClass("ongoing newclass"+newclass); 

试试这个,

 var newclass = 0; jQuery("#addexperience").click(function(){ $clone=$("#expclone").clone() $clone.find("input:text").val(""); $clone.find(".ongoing").removeAttr('class') // remove all classes .addClass('ongoing'); // again add ongoing class $clone.find(".ongoing").each(function(){ $(this).addClass("newclass"+newclass); newclass++; }); $clone.prependTo(".exp_clone"); }); 

但是,给新id而不是新class更好。