0

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

在他们放下物品后,邮箱“后面”会创建一个新图像,让您感觉它实际上正在掉入其中。

每次有人掉落物品时,我都会使用以下代码创建新图像并为其设置动画:

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 并将所有这些再次附加到正文(至少在我看来是这样)。

我目前被困在防止这种情况的方法上,任何帮助将不胜感激。

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

4

2 回答 2

1

你的假设是对的。您正在重新复制原始和已复制的元素。使用不同的类标识符而不是 $(".animateDrop") 或从您不想再复制时删除此类

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

于 2011-10-24T10:01:27.403 回答
0

first() or :first只需在克隆调用之前使用 jQuery 的选择器。这应该够了吧。

于 2011-10-24T10:17:57.327 回答