代码之家  ›  专栏  ›  技术社区  ›  Soviut

如何确保在jquery插件中加载图像?

  •  1
  • Soviut  · 技术社区  · 16 年前

    在创建一个需要图像尺寸的jquery插件时,我发现像chrome这样的Webkit浏览器通常会为图像返回0大小,因为它们是并行加载的。

    我快速而肮脏的解决方案是将调用插件的代码包装在 $(window).load() 事件:

    $(document).ready(function() {
        $(window).load(function() {
            $('.magnifier').magnifier();
        });
    });
    

    我该如何在插件内部实现这一点呢?最干净的方法是什么检测图像已加载,以便我可以测量它们的尺寸?

    2 回复  |  直到 16 年前
        1
  •  3
  •   Paolo Bergantino    16 年前

    图像有一个load()事件,因此可以执行如下操作:

    $(document).ready(function() {
        $('.magnifier').magnifier();
    });
    
    $.fn.magnifier = function() {
        return this.each(function() {
            $(this).find('img').load(function() {
                // do something to image when it is loaded
            });
        });
    }
    

    您也可以简单地将代码包装在window.load中的插件本身:

    $.fn.magnifier = function() {
        var that = this;
        $(window).load(function() {
            that.each(function() {
                $(this).find('img').each(function() {
                    // image would be loaded at this point
                });
            });
        });
        return this;
    }
    
        2
  •  1
  •   Andy Gaskell    16 年前

    我不确定我是否完全理解,但这将在加载所有图像后触发。

    $("img").load(function() { 
    
    });