每次克隆时,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
更好。