【问题标题】:Image load by jQuery通过 jQuery 加载图像
【发布时间】:2013-03-30 18:52:08
【问题描述】:

我们在不同的块中有图片和链接。

当链接被点击时,它的href属性放到图片的src。

我想做什么:

If image is not already loaded (not cached) {
    fadeOut previous image {
        fadeIn loader {
            load image (when animation of loader ends) {
                fadeOut loader {
                    fadeIn image
                }
            }
        }
    }
} else (if image is cached, do not show loader) {
    fadeOut previous image {
        fadeIn new image
    }
}

这是我所拥有的:http://jsfiddle.net/EvXJr/13/

第一部分有效,不知道如何编写第二部分 (else)。

请帮忙。

【问题讨论】:

    标签: javascript jquery html css animation


    【解决方案1】:

    如果页面上没有具有此类 id 的元素,则肮脏的方法是为加载的图像分配 id - 显示加载器,否则只是动画图像。

    示例: html:

    <div id="container">
       <a href="http://www.site.com/image.png" id="smid1"></a>
       <a href="http://www.site.com/image.png" id="smid2"></a>
    </div>
    

    js:

    $('#container').delegate('a', 'click', function () {
       var sel_id = this.id;
       if (!document.getElementById('img_' + this.id)) {
          //create image with  id  like: sel_id = 'img_' + this.id
       } else {
          //just show image
       }
    });
    

    【讨论】:

    • 我会那样做。生成具有 ids 属性 site.com/image.png"></a> 的元素,并将诸如“img_sm_id_1”之类的 id 分配给链接的图像
    【解决方案2】:

    您为什么不使用已加载的 javascript 数组跟踪已加载的 HREF,如果可以在加载的数组中找到您的 HREF,只需取出与加载程序相关的函数。

    【讨论】:

      【解决方案3】:

      无法加载 jsfiddle,但如果我理解正确,我只需将保存图像的元素的背景图像设置为加载 gif,那么您不必担心加载器的淡入和淡出。如果图像已被缓存,它将加载得如此之快,您将永远看不到加载 gif。如果它不是并且需要一段时间来加载,用户将看到加载 gif,并且使用图像下方的功能将在加载后很好地淡入。

      如果您想在图像加载后执行某个功能,请使用

      $("img").load(function(){
          //do stuff once image has loaded.
          //for example
          $(this).fadeIn("slow");
      });
      

      【讨论】:

      • loader 不是背景,它是一个单独的块,远离图像持有者。 jsfiddle 上的代码只是一个例子。
      猜你喜欢
      • 2016-02-15
      • 1970-01-01
      • 2011-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-15
      相关资源
      最近更新 更多