你好,我正在使用ajax和json实现无限滚动,并创建了一个html字符串添加到我的网页中,并通过jQuery的 after() 函数进行调用。
$('.product-panel:last').after(productHTML);
现在我需要等待新产品HTML字符串中的所有图像加载完毕,然后调用我创建的另一个JavaScript函数来进行一些格式化操作。
我尝试了以下方法:
$('.product-panel:last').after(productHTML).promise().done(function(){
doMoreStuff();
});
它不起作用。有人可以帮忙吗?谢谢。
编辑:在按照adeneo的代码后,这是我的最终结果,它完美地工作了。
var productLength = $('.product-panel').length-1;
$('.product-panel:last').after(productHTML);
var images = $(".product-panel:gt("+productLength+")").find('img');
var promises = [];
images.each(function(idx, img) {
var def = $.Deferred();
img.onload = def.resolve;
img.onerror = def.reject;
if ( img.complete ) def.resolve();
promises.push(def.promise());
});
$.when.apply($, promises).done(function() {
productHeight();
});
.load()
而不是.after()
吗? - Filthy_Richload
是$ .get
的快捷方式,而$ .get
又是$ .ajax
的快捷方式,它与after
没有任何共同点,后者是一种 DOM 插入方法,例如append
、insertAfter
、prepend
等。 - adeneo