2

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

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

更新(用例说明):
基本上我正在做的是对数组执行一系列串行操作。ABCD,按顺序。但是,当 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');
    }); 

};  

假设 steps 等于 jQuery 对象数组。

4

1 回答 1

2

它可以很容易地完成:

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

更新:

var play = function() {
    $(steps).each(function() {
        $(this).filter(':visible').click();
    });
};​
于 2012-05-10T07:37:18.993 回答