我有一个jQuery ajax函数,将一些内容加载到div中,其中一些内容是图像。我想说,直到那些刚刚加载到我的ajax中的图像完成加载,然后运行一个函数(如显示内容)。这样,我就不会将内容加载到div中并且图像开始加载。我希望他们被加载,然后把内容,或show()
的内容在div中。知道何时完成图像加载AJAX响应
我已经看到很多解决方案,例如使用,但它似乎不适用于使用ajax加载的内容。
我有一个jQuery ajax函数,将一些内容加载到div中,其中一些内容是图像。我想说,直到那些刚刚加载到我的ajax中的图像完成加载,然后运行一个函数(如显示内容)。这样,我就不会将内容加载到div中并且图像开始加载。我希望他们被加载,然后把内容,或show()
的内容在div中。知道何时完成图像加载AJAX响应
我已经看到很多解决方案,例如使用,但它似乎不适用于使用ajax加载的内容。
您需要在AJAX回调中添加装载处理程序,以使其适用于通过AJAX调用加载的图像。您可能还希望设置一个计时器,以便在应用装载处理程序之前加载图像以显示内容。
$.ajax({
...
success: function(data) {
var imageCount = $(data).filter('img').length;
var imagesLoaded = 0;
$(data).hide()
.appendTo('#someDiv')
.filter('img')
.load(function() {
++imagesLoaded;
if (imagesLoaded >= imageCount) {
$('#someDiv').children().show();
}
});
setTimeout(function() { $('#someDiv').children().show() }, 5000);
}
});
$("img").load()
将不起作用,因为图像是动态加载的;该命令将仅适用于当时页面上的图像。
使用$("img").live("load")
来跟踪图像何时加载。
奇。我想说live不支持加载 - 它可能不会 - 但加载事件不会出现在受支持或不受支持的列表中。你有没有测试过,看它是否有效? – tvanfosson 2009-11-01 20:42:18
我想: $( '#productFull IMG')生活( '负荷',函数(){ 警报( '形象装!'); \t \t }); 但是,这似乎并没有工作。这是否需要在ajax函数的范围内? – 2009-11-01 20:44:50
我没有测试过它,如果它不在支持的列表中,它很可能不被支持,因为jQuery很难实现。 – mahemoff 2009-11-01 20:47:45
这是最新版本的代码tvanfosson提供的。
你必须确保imageCount
变量计算节点列表,而不是一个字符串在原代码的问题,从我可以推断出:
+1 - 我非常喜欢这种方法。 – karim79 2009-11-01 21:00:20
我很难得到这个工作。获取一些js错误。有没有人有这样的例子? – 2009-11-01 21:20:46
这个脚本在我调整它之后为我工作...看我的帖子在 – bgreater 2010-06-08 16:49:31