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