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.styleSheets当您可以通过API询问它们时,为什么还要通过 AJAX 再次加载每个样式表(它们已经在您的页面中加载过一次) ?

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

由于这种方法将构成同步操作,因此您不需要回调 - 您只需将“回调”代码放在循环之后。

于 2012-08-28T14:35:53.193 回答