需要解释jquery代码

时间:2011-12-23 09:06:17

标签: jquery

我有一个代码可用于在所有图像下载完成时通知用户,但代码流程对我来说不是很清楚。任何人都可以详细解释。

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");
});

感谢

1 个答案:

答案 0 :(得分:0)

.one(event,handler)设置一个代码块,最多只能对给定的事件执行一次。这意味着,如果您有类似$("#someid").one(click, function(){blabla; more_blabla;});的内容,则只会在您第一次点击someid元素时触发。

Reference

编辑:此问题对代码有一些解释。 jQuery loading images with complete callback

基本上,您在页面中加载一个或多个图像对象。 $("#all-images img").one ...将一个事件处理程序(当事件发生时运行的代码块)绑定到所有正在加载的图像......代码将为每一个执行ONCE和ONLY ONCE。

稍后,有一个.each只会在所选的"#all-images img"元素上运行,而指针 this 只是指向正在加载的对象(heh)(图像)和属性完整告诉加载是否完成。因此,最后一段代码会查找已加载的图像,以便将它们的aaaalll上的事件处理程序绑定到它们上面(因为初始绑定只考虑从服务器加载的图像,我猜。)

希望我足够清楚