jQuery each()完整的回调函数

时间:2012-08-28 14:30:27

标签: jquery callback each

我正在尝试使用以下每个()函数

扫描DOM中的所有样式表
$("link").each(function(){
    $.get($(this).attr('href'), function() {
        // Some Code...
    });
});

此代码工作正常但我希望回调知道所有样式表已被扫描&之后运行另一个功能。是否有可能实现这一目标?

2 个答案:

答案 0 :(得分: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
  }
);

答案 1 :(得分:1)

为什么在通过document.styleSheets API查询每个样式表时,您是否只是通过AJAX再次加载每个样式表(它们已经在页面中加载了一次)?

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

由于这种方法会构成同步操作,因此您不需要回调 - 您只需在循环后立即放置'回调'代码。