【发布时间】:2010-10-29 04:58:37
【问题描述】:
我最近询问如何检测页面的所有资源(例如图像和样式表)何时已加载。答案回来了,使用 $(window).load(); jQuery中的方法。
我现在的问题是如何检测何时通过 AJAX 加载内容。 AJAX 将一些 img 元素注入到 DOM 中……我如何知道这些图像何时完成加载?
【问题讨论】:
我最近询问如何检测页面的所有资源(例如图像和样式表)何时已加载。答案回来了,使用 $(window).load(); jQuery中的方法。
我现在的问题是如何检测何时通过 AJAX 加载内容。 AJAX 将一些 img 元素注入到 DOM 中……我如何知道这些图像何时完成加载?
【问题讨论】:
在$.get() 或$.post() 函数中,您可以提供将在ajax 请求完成时调用的函数的名称。例如:
$.get("something.php",{data:'test'},foo);
function foo()
{
// This function will be called when the request has completed
}
或者:
$.get("something.php",{data:'test'},function()
{
//This function will be called in the same way
}
);
【讨论】:
如果您正在调用 $.ajax,您可以设置一个成功请求的回调函数:
$.ajax({
url: _url,
type: _type,
data: _data,
dataType: _dataType,
success: _success
})
var _success = function(result) {
$html = $(result);
alert('HTML downloaded');
// inject HTML into DOM here
}
您需要通过 $html 来获取图像元素,并为每个图像注册加载函数回调,该回调会在图像加载时触发:
$('#myImage').load(function() {
alert('Image Loaded');
});
【讨论】:
检测 ajax 获取的时间很容易:使用 jQuery 中定义的 Ajax 事件:http://docs.jquery.com/Ajax
但我不确定你问的是同样的事情。要检测图像何时完成加载(假设这将等于图像的 src 属性更改时的事件),您可以使用突变事件。 http://wiki.github.com/jollytoad/jquery.mutation-events 干杯,
jrh.
【讨论】: