jquery insertAfter()也插入了clone

时间:2013-02-03 11:43:24

标签: jquery clone

我的js脚本中发生了一件奇怪的事情。

当执行点击功能时,一个元素应该插入另一个元素,但由于某种原因,元素clone也会插入

为什么?克隆发生在点击功能之外。

请帮助我理解发生了什么。

http://jsbin.com/unenil/1/edit

$("button").click(function() {
  $(".one").insertAfter(".two");
  $(".status").text("done");
});


var clone_one = $(".one").clone();
var clone_two = $(".two").clone();
$("body").append(clone_one);
$("body").append(clone_two);

基本上我不明白为什么在这种情况下点击功能与在它之外发生的克隆有关。

1 个答案:

答案 0 :(得分:1)

克隆元素具有one类,所以他的克隆也是。

因此$(".one")包含克隆和克隆。

解决方案是保留对原始元素的引用并插入它:

var original = $(".one");
var clone_one = original.clone();
var clone_two = $(".two").clone();
$("body").append(clone_one);
$("body").append(clone_two);

$("button").click(function() {
  original.insertAfter(".two");
  $(".status").text("done");
});