首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在文档上隐藏图像准备就绪,在加载时淡入每个图像

在文档上隐藏图像准备就绪,在加载时淡入每个图像
EN

Stack Overflow用户
提问于 2012-02-17 23:48:26
回答 3查看 716关注 0票数 4

我正在尝试编写一个Jquery脚本,它使用setInterval在图像加载时淡入淡出。

我当前的代码不起作用--“图像加载”类没有被删除。

所以有两个问题: 1)为什么代码不工作,2)这是完成我想做的事情的最好方法吗?有没有更好的方法?

代码语言:javascript
复制
   (function($) {

        var $props = $('#properties'),
            $imgs = $props.find("img");

        $imgs.addClass('image-loading');

        (function updateImages() {
            setTimeout(function() {

                $imgs.each(function(){
                    $me = $(this);

                    // If image is loaded, remove class
                    $me.load(function(){
                        $me.removeClass('image-loading');
                    });
                });

                // if all images are loaded, stop the loop
                $imgs.load(function () {
                    return false;
                });

                updateImages();
            }, 100);
        })();

    })(jQuery);
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-17 23:56:28

这看起来像是部分实现。试试这个:

代码语言:javascript
复制
(function($) {

    var $props = $('#properties'),
        $imgs = $props.find("img"),
        loadCounter = 0, // you init these, but never use them?
        nImages = $imgs.length;

    $imgs.addClass('image-loading');

    (function updateImages() {
        setTimeout(function() {
            $imgs.one("load", function() {

                $(this).removeClass('image-loading');

            // to manually trigger onload if image is in cache
            }).each(function () {
                if (this.complete) {
                    $(this).trigger("load");
                }
            });
            updateImages();
        }, 100);
    })();

})(jQuery);​

票数 2
EN

Stack Overflow用户

发布于 2012-02-17 23:57:17

我有一个插件,可以帮助你做到这一点。包含jQuery preloadImages插件,然后尝试以下代码:

代码语言:javascript
复制
properties.preloadImages(function(){
  // this refers to the image that is done loading.
  $(this).removeClass("image-loading");
})/*.done(function(){
  alert("All images are loaded!");
})*/;

用于澄清的编辑:

此代码将替换(function updateImages(){...})()

票数 1
EN

Stack Overflow用户

发布于 2012-02-19 05:32:43

我最终使用了以下jQuery插件:

https://github.com/farinspace/jquery.imgpreload

语法非常简单:

代码语言:javascript
复制
        var $imgs = $('#properties').find("img");

        $imgs.imgpreload({
            each: function() {
                $(this).removeClass('image-loading');
            }
        });

它比我最初尝试拼凑起来的代码要轻得多,也更简单。它做的正是我想让它做的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9331301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档