Javascript jquery动态加载图像

Javascript jquery动态加载图像,javascript,jquery,Javascript,Jquery,我有一个img元素,每次动态更改它的src时,我都希望得到新图像的宽度(在它完全加载之后) 如果映像已在缓存中(?),则似乎不会触发.load(),但在这种情况下,我不想再次加载它,因为: 'image.jpg?' + new Date().getTime(); 会(?) 最好的方法是什么 编辑: 如果缓存中的图像已经在现代浏览器中,它似乎不会触发,您可以使用complete属性检查图像是否已完成加载,即使它已缓存。比如: $("#myimg").on('load', function

我有一个img元素,每次动态更改它的src时,我都希望得到新图像的宽度(在它完全加载之后)

如果映像已在缓存中(?),则似乎不会触发.load(),但在这种情况下,我不想再次加载它,因为:

   'image.jpg?' + new Date().getTime();
会(?)

最好的方法是什么

编辑:


如果缓存中的图像已经

在现代浏览器中,它似乎不会触发,您可以使用
complete
属性检查图像是否已完成加载,即使它已缓存。比如:

$("#myimg").on('load', function () { /* get new width */ });

if ($("#myimg").attr('src', 'image.jpg').prop('complete')) {
    /* get new width */
}

(以防
.prop
不起作用,您可以使用
.get(0).complete
)。

在现代浏览器中,您可以使用
complete
属性检查图像是否已完成加载,即使它已缓存。比如:

$("#myimg").on('load', function () { /* get new width */ });

if ($("#myimg").attr('src', 'image.jpg').prop('complete')) {
    /* get new width */
}
(以防万一
.prop
不起作用,您可以使用
.get(0).complete
)。

.load()
不会触发,如果映像在缓存中,并且在某些浏览器(IE)中对映像设置
.src
属性之前未安装
onload
处理程序

如果图像是用javascript动态创建的,那么只需确保在设置
.src
属性之前分配了
onload
处理程序

如果图像在HTML页面中,那么保证为该特定图像获得onload事件的唯一方法是在HTML本身中指定onload处理程序。无法为HTML中的图像安装带javascript的onload处理程序并确保调用它,因为在任何javascript运行之前,图像可能已经加载

您可以检查图像是否已加载
.complete
属性

因此,HTML中的图像解决方案如下:

var img = $('#test img:first');
if (!img[0].complete) {
    img.load(function() {
        // onload code here
    });
} else {
   // image already loaded
}
如果映像在缓存中并且在某些浏览器(IE)中对映像设置
.src
属性之前未安装
onload
处理程序,
.load()
将不会触发

如果图像是用javascript动态创建的,那么只需确保在设置
.src
属性之前分配了
onload
处理程序

如果图像在HTML页面中,那么保证为该特定图像获得onload事件的唯一方法是在HTML本身中指定onload处理程序。无法为HTML中的图像安装带javascript的onload处理程序并确保调用它,因为在任何javascript运行之前,图像可能已经加载

您可以检查图像是否已加载
.complete
属性

因此,HTML中的图像解决方案如下:

var img = $('#test img:first');
if (!img[0].complete) {
    img.load(function() {
        // onload code here
    });
} else {
   // image already loaded
}

调用
.load
的代码在哪里?能否将.attr('width')链接到用于更改src的任何代码?你需要发布你的代码并澄清你的问题,这很让人困惑。你调用
.load
的代码在哪里?你能把一个.attr('width')链接到你用来更改src的任何代码上吗?你需要发布你的代码并澄清你的问题,这很让人困惑。