我有一个代码可用于在所有图像下载完成时通知用户,但代码流程对我来说不是很清楚。任何人都可以详细解释。
one()函数及其作用... load()函数如何调用
这是代码
$("#loadingDiv").show();
var nImages = $("#all-images").length;
var loadCounter = 0;
$("#all-images img").one("load", function() {
loadCounter++;
if(nImages == loadCounter) {
$(this).parent().show();
$("#loadingDiv").hide();
}
}).each(function() {
// attempt to defeat cases where load event does not fire
// on cached images
if(this.complete) $(this).trigger("load");
});
感谢
答案 0 :(得分:0)
.one(event,handler)设置一个代码块,最多只能对给定的事件执行一次。这意味着,如果您有类似$("#someid").one(click, function(){blabla; more_blabla;});
的内容,则只会在您第一次点击someid元素时触发。
编辑:此问题对代码有一些解释。 jQuery loading images with complete callback
基本上,您在页面中加载一个或多个图像对象。 $("#all-images img").one
...将一个事件处理程序(当事件发生时运行的代码块)绑定到所有正在加载的图像......代码将为每一个执行ONCE和ONLY ONCE。
稍后,有一个.each只会在所选的"#all-images img"
元素上运行,而指针 this
只是指向正在加载的对象(heh)(图像)和属性完整告诉加载是否完成。因此,最后一段代码会查找已加载的图像,以便将它们的aaaalll上的事件处理程序绑定到它们上面(因为初始绑定只考虑从服务器加载的图像,我猜。)
希望我足够清楚