jquery clone,exponential <div> creation </div>

时间:2011-10-24 09:53:42

标签: jquery html clone exponential

我正在创建一个应用程序,用户可以将项目拖动到邮箱。

在他们放下该项目后,会在邮箱“后面”创建一个新图像,让您感觉它实际上正在落入。

每次有人放弃项目时,我都会使用以下代码创建新动画并制作动画:

function animateDrop(){
animateArray.push($('.animateDrop').clone())
xArray.push(xPos)
yArray.push(yPos)

var foo = animateArray[animateArray.length - 1];
var finalxPos = xArray[xArray.length - 1];
var finalyPos = yArray[yArray.length - 1];

$('body').append(foo);
foo.css({'left': finalxPos, 'top': finalyPos + 40}).fadeIn('slow');
foo.animate({'top': '+=100px'},1500);
};
animateDrop();

执行代码时会创建一个新图像,但丢弃更多项目会导致正在创建的div的指数增长。

在某处它记住所有先前创建的div并将所有这些再次附加到身体上(至少对我来说是这样)。

我目前陷入阻止这种情况的方法,任何帮助都将受到赞赏。

更新24-10-2011:animateArray.push($('。animateDrop')。first()。clone()) 将.first()添加到数组推送解决了创建多个div的问题。

2 个答案:

答案 0 :(得分:1)

你的假设是对的。您正在复制原始&amp;已复制的元素全部 再次。使用不同的类标识符而不是$(“。animateDrop”)或从您不想再复制的类中删除此类

对于您的问题,可能有更好的方法 - 您可以在拖放功能上使用回调函数 看看这里:http://jqueryui.com/demos/draggable/

答案 1 :(得分:0)

在克隆调用之前使用jQuery的first() or :first选择器。这应该可以解决问题。