2

次の each() 関数を使用して、DOM 内のすべてのスタイルシートをスキャンしようとしています

$("link").each(function(){
    $.get($(this).attr('href'), function() {
        // Some Code...
    });
});

このコードは正常に動作しますが、コールバックを取得して、すべてのスタイルシートがスキャンされたことを知り、その後別の関数を実行したいと考えています。これを達成することは可能ですか?

4

2 に答える 2

8

$.Deferredオブジェクトの配列を作成します。

var jqXHRs = $("link").map(function() {
  return $.get($(this).attr('href'), function () {
    // Some code...
  });
});

そして、それらをコールバックに渡して.when()使用します。done()

$.when.apply(null, jqXHRs.get()).done(
  function() {
    // All done
  }
);
于 2012-08-28T14:35:52.173 に答える
1

document.styleSheetsAPIを介して問い合わせることができるのに、AJAX を介して各スタイルシートを 2 回 (既にページに 1 回読み込まれている) 読み込む必要があるのはなぜですか?

for (var i in document.styleSheets) {
    /* code here involving cssText or whatever */
}

このアプローチは同期操作を構成するため、コールバックは必要ありません。ループの直後に「コールバック」コードを配置するだけです。

于 2012-08-28T14:35:53.193 に答える