以设定的时间间隔将 jQuery 添加到数组中的元素

Posted

技术标签:

【中文标题】以设定的时间间隔将 jQuery 添加到数组中的元素【英文标题】:Add jQuery to elements in an array at set interval of time 【发布时间】:2012-12-16 00:07:37 【问题描述】:

我想在稍有不同的时间制作动画以清除项目列表,例如每隔 20 毫秒。 (当您清除消息时,想想 android 4.2 的警报屏幕)。

但是,我不知道如何在间隔时间 addClass 到数组中的不同元素。我已经尝试过了,但这只是将 jQuery 应用于最后一个元素:

for item in App.itemsController.content
  jQuery('#box').delay(2000).queue (n) ->
    selector = '.' + item.objectId
    console.log selector
    $(selector).addClass('animated fadeOutRightBig')

我也尝试过setTimeout()setInterval() 无济于事。 谢谢。

【问题讨论】:

【参考方案1】:

您需要使用闭包来保持对 item 变量的引用。我不使用 CoffeeScript,但在 javascript 中我会这样做。

var box = jQuery('#box');
for (var i in App.itemsController.content) 
    var item = App.itemsController.content[i];
    (function(item) 
        box.delay(2000).queue(function() 
            var selector = '.' + item.objectId;
            $(selector).addClass('animated fadeOutRightBig');
        );
    (item));

也许这就是你在 CoffeeScript 中的做法?刚刚快速浏览了一下语法。

for item in App.itemsController.content
  do (item) ->
     jQuery('#box').delay(2000).queue (n) ->
       selector = '.' + item.objectId
       console.log selector
       $(selector).addClass('animated fadeOutRightBig')

您还应该在循环外引用#box 元素,否则您的程序必须在每次迭代时搜索 DOM。

【讨论】:

您的 JavaScript 看起来正确,但您的 CoffeeScript 不正确; (item) -> ... 只是定义了一个函数,但没有调用它。您可能想在 CoffeeScript 中使用 dodo (item) ->do的详情见this section底部。 @muistooshort 感谢您的澄清,我已经更新了我的答案。 看起来更好。 for-function 结构很常见,CoffeeScript 有专门针对这个用例的do

以上是关于以设定的时间间隔将 jQuery 添加到数组中的元素的主要内容,如果未能解决你的问题,请参考以下文章

将位间隔从变量复制到数组

将行号列添加到 jquery 数据表

Pandas-如何添加条目跳过行的列?

JQuery错误数组列表项添加跳转链接到表单标签

将项目添加到 Django 中的元组元组后是不是可以重新启动服务器?

根据购物车的状态以设定的时间间隔推送通知? /离子