简单的问题我相信,但我无法想象我该怎么做?
m.find("iframe[src=''][data-src]").each(function() {
$(this).load(function() {
// something here
}).attr("src", $(this).attr("data-src"));
});
// how to pause here until all 'load's are fired?
m.css("visibility", "visible");
答案 0 :(得分:1)
这是基于我使用的方法的东西。您可能希望添加更多错误处理,以防iframe未加载或没有任何iframe(如果可能的话)。
var deferred = $.Deferred(),
$iframes = m.find("iframe[src=''][data-src]"),
count = $iframes.length;
$iframes.each(function() {
$(this).load(function() {
// something here
if(--count == 0) {
deferred.resolve(); // We have received all the expected loads
}
}).attr("src", $(this).attr("data-src"));
});
deferred.promise().done(function() {
m.css("visibility", "visible");
});
答案 1 :(得分:1)
尝试
var el = m.find("iframe[src][data-src]")
, len = el.length
, t = 0;
el.each(function () {
$(this).load(function (e) {
++t;
if (t === len) {
el.css("visibility", "visible")
}
}).attr("src", $(this).attr("data-src"));
});
答案 2 :(得分:-1)
尝试使用.stop()函数!