我目前正在使用Jquery Lazy Load,我想知道是否有一种方法在我的容器中所有图片加载完成后(当Lazy Load发挥全部作用时)进行回调。
原因是我还在使用jScrollPane Plugin,我想调用jScrollPane重新初始化函数。
谢谢。
原因是我还在使用jScrollPane Plugin,我想调用jScrollPane重新初始化函数。
谢谢。
从源代码看,懒加载插件似乎在加载图像后调用settings.load
函数,并传递加载的图像元素和一些参数:
if (settings.load) {
var elements_left = elements.length;
settings.load.call(self, elements_left, settings);
}
所以你可能只需要设置类似于这样的内容:
function yourhandler(element, el_left, settings) {
//Whatever you want
//This function will be called each time that an image (element in this case) is loaded
}
$("img.lazy").lazyload({
load : yourhandler
});
如果你想确保图片已加载,你可以将监听器附加到已加载的图片上:function yourhandler(element, el_left, settings) {
element.load(function() {
alert('Image Loaded');
});
}
尝试过代码后,最“干净”的方法是附加到您的图像的.load
方法:
$('img.lazy').load(function() {
console.log($(this).attr('src') + ' loaded');
});
$('img.lazy').lazyload({
container:$('.p_content'),
});
function yourhandler(elements_left, settings) {
var imageNode, container;
if(elements_left === 0) {
// All images were loaded.
// Now do whatever you need with imageNode or its parents (container, etc) in order
// to run any other Plugin
imageNode = $(this);
container = settings.container;
alert('Ready to continue! Image node is $(this) and container settings.container');
}
}
yourhandler(elements_left, settings)
,那么这是唯一的方法来知道“何时”你正在处理最后一张图片,换句话说:当所有图片都加载完成时,而不是每一张图片(理解这是对话线程的原始情况)。如果这不是你要找的,那就算了,不用理会我的回答。祝好。 - Eduard Roura
yourhandler
函数的第一个参数不是元素本身,而是this
,因为load
函数是以该元素作为上下文调用的。 - Simon