首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >向For循环中添加延迟

向For循环中添加延迟
EN

Stack Overflow用户
提问于 2012-04-17 04:39:22
回答 2查看 662关注 0票数 1

我尝试了在这里找到的解决方案:How do I add a delay in a JavaScript loop?,但我无法使它对我有效。

代码语言:javascript
运行
复制
    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()插件。我使用键盘快捷键(keyup)来运行这个tenTimes函数()。如果我一次又一次地按下这个键,那么很多新的对象都不会被拖动。似乎是随机的,哪些物体不能被拖走。我想也许我的快速按键破坏了那些失败的绑定事件,但是即使我走慢了,也有一些不会变得拖拉。

在继续使用for循环之前,是否有什么方法可以检查对象是否被正确绑定?是否有严格更好的方法?不幸的是,这不是动画,所以我不能使用.delay()。

解决方案

这是我使用appendTo()处理元素的第三个脚本,它导致了问题。

使用append()或appendTo()似乎使对象与可拖动的绑定在一起,但是它在过程中丢失了左/顶css,因此不能被拖动。与其找出一些.css()黑客(每个值都是唯一的),我只是创建了一个全新的元素,并复制了相关的数据,然后删除()旧的。拖曳在另一个点被适当地绑定到它。这样,问题就解决了。

EN

回答 2

Stack Overflow用户

发布于 2012-04-17 04:48:45

编辑

试试.setTimeout()

我没有读到您说不能使用.Delay()。

票数 1
EN

Stack Overflow用户

发布于 2012-04-17 05:30:33

顺便说一下,您可能会发现通过替换

代码语言:javascript
运行
复制
jQuery.fn.createEntry = function () {
    $("#List").append('<span>New Entry</span>');
    $("#List span").draggable({ grid: [30,45] });
}

使用

代码语言:javascript
运行
复制
jQuery.fn.createEntry = function () {
    $("#List").append($('<span>New Entry</span>').draggable({ grid: [30,45] }));
}

因为您可能不想将draggable重新应用于所有已经存在的span

实际上,这可能就是破坏你的代码的原因。第一个span已经对它重新应用了10次draggabledraggable幂等吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10185138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档