我试过在这里找到的解决方案:How do I add a delay in a JavaScript loop?但我无法让它为我工作。添加延迟For For循环
jQuery.fn.createEntry = function() {
$("#List").append('<span>New Entry</span>');
$("#List span").draggable({ grid: [30,45] });
}
jQuery.fn.tenTimes = function() {
for (var i = 1; i <= 10; i++){
$(document).createEntry();
}
}
在.createEntry()脚本中,新对象绑定到我拥有的.draggable()插件。我正在使用键盘快捷键(键控)来运行这个十进制功能()。如果我不止一次地按下按键,许多新对象将无法拖动。这似乎是随机的,哪些对象无法拖动。我认为也许我的快速按键会破坏那些失败的绑定事件,但即使我放慢了速度,有些也不会拖延。
在继续使用for循环之前,是否有某种方法可以检查对象是否被正确绑定?有没有更好的方法?不幸的是,这不是一个动画,所以我不能使用.delay()。
SOLUTION
那是我去一个第三脚本处理使用appendTo(),以这些元素是导致该问题。
使用append()或appendTo()似乎使该对象与可拖动对象绑定,但它沿途丢失了左/顶部CSS,因此无法拖动它。我没有找出一些.css()破解(每个值都是唯一的),而是简单地创建了一个全新的元素,并复制相关数据,然后删除()旧的元素。 Draggable在其他点正确绑定到它。有了这个,问题就解决了。
这很可能是问题在于createEntry()函数。 – 2012-04-17 04:42:58
你可以发布'createEntry'吗? – 2012-04-17 04:55:08
@joeframbach - 我添加了该功能;它非常裸露,所以我省略了它,但它可能是破坏它的语法。 – 2012-04-17 05:27:23