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 に答える