javascript - 使用 jQuery 延迟对象连续处理 jQuery 集合/数组

标签 javascript jquery jquery-deferred

我有一个 jQuery 对象数组。我想与数组中的每个项目进行交互(如果它们可见)。我的流程是这样的:

  1. 创建一个数组,其元素都是 jQuery 对象。
  2. 这些对象可能可见,也可能不可见。
  3. 从数组中的第一个元素开始。
  4. 等待项目可见,时间任意。说3秒。如果变得可见,则转到步骤 5,否则从“播放”功能返回。//已更新
  5. 点击该项目。
  6. 重复 4-5,直到没有更多可交互的项目。

更新(用例澄清):
本质上我正在做的是在数组上执行一系列串行操作。 A-B-C-D,按顺序。但是,当 A 创建 B 的元素并且已经检查 B 是否可见时,可能会出现问题。它不会被点击。

我一直在研究 jQuery 的延迟对象,但不知道如何实现它。如何实现?除了使用延迟对象之外还有其他选择吗?

根据 @jmort 的建议,我将附上我目前拥有的内容。

var play = function() {
    var dfds = []; 
    $(steps).each(function(i, v) {
        dfds[i] = $.Deferred();
    }); 

    $.when.apply(null, dfds).then(function(){
        console.log('all done');
    }); 

};  

假设步骤等于 jQuery 对象数组。

最佳答案

这很容易做到:

var play = function() {
    $(steps).filter(':visible').click();
}; 

更新:

var play = function() {
    $(steps).each(function() {
        $(this).filter(':visible').click();
    });
};​

关于javascript - 使用 jQuery 延迟对象连续处理 jQuery 集合/数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10529305/

相关文章:

javascript - 需要帮助通过 JavaScript 和 JQuery 创建基于点击的表单元素

jquery - 是否有任何 jQuery 版本符合 Promise/A 规范?

JQuery 使用 .each() 延迟

javascript - jQuery 1.8 中的 pipe() 和 then() 文档与现实

javascript - 重新使用一个 jquery 函数,为它提供一个 php 变量而不是 html

javascript - 如何通过选择特定的 id 来显示表中的数据以从数据库中获取多行

javascript - jQuery 导航幻灯片

javascript - 我怎么能不允许输入类型文本中的数字

asp.net-mvc-3 - 无法设置模型 MVC 属性

javascript - 为什么服务变化没有更新 Controller ?