2017-01-10 90 views
0

我很新的JavaScript/jQuery。 下面的示例确实会为我的列表中的每个瀑布项调用.each部件。但是$img.load永远不会因为某种原因而被调用?Image.load函数没有被调用

无法真正弄清楚我做错了什么?

(function($) { 
 
    $(document).ready(function(e) { 
 

 
    var $waterfall = $('.waterfall'); 
 
    if ($waterfall.length) { 
 
     $waterfall.waterfall({}); 
 
    } 
 

 
    // sort the waterfall when images are loaded 
 
    var $waterfallItem = $('.waterfall-item'); 
 
    $waterfallItem.each(function(j, image) { 
 
     var $img = $(image); 
 

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

 
    }); 
 
})(jQuery);
<ul class="waterfall"> 
 
    <li class="waterfall-item"> 
 
    <a href="hidden link" title="hidden title"> 
 
     <img alt="hidden alt" title="hidden title" data-srcset="hidden in this example" data-src="also hidden in this example" src="still hidden in this example" data-sizes="(min-width:440px) 300px, 95vw" class=" lazyloaded" sizes="(min-width:440px) 300px, 95vw" 
 
     srcset="think I'll hide this one too"> 
 
     <span class="waterfallImgOverlay"></span> 
 
    </a> 
 

 
    </li> 
 
</ul>

+1

检查参考加载功能https://api.jquery.com/load-event/ – user1097772

+0

我已经看过那个页面,但并不真正了解所有内容或知道我在找什么。 –

+1

你试过把你的jquery代码放在'$(document).ready(function(){})'里面。 – Manwal

回答

0

解决这样的:

var $waterfall = $('.waterfall'); 
 
if ($waterfall.length) { 
 
    $waterfall.waterfall({}); 
 
} 
 

 
// sort the waterfall when images are loaded 
 
var $waterfall_images = $waterfall.find('img'); 
 
$waterfall_images.each(function(j, image) { 
 
    var $img = $(image); 
 

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

 

 
});