我有一个 jQuery 对象数组。如果它们是可见的,我想与数组中的每个项目进行交互。我的流程是这样的:
- 创建一个数组,其元素都是 jQuery 对象。
- 对象可能可见也可能不可见。
- 从数组中的第一个元素开始。
- 等待项目可见,时间是任意的。说 3 秒。如果变得可见,则转到步骤 5,否则从“播放”功能返回。// 更新
- 单击该项目。
- 重复 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 对象数组。