Jquery 更改图像(img)标记的源不会';不要在IE上调整大小

Jquery 更改图像(img)标记的源不会';不要在IE上调整大小,jquery,dom,Jquery,Dom,我的DOM中有一个img元素。根据用户操作,我计算图像的URL,并更改图像元素的src属性(使用jQuery)。新图像的大小与旧图像的大小不同。这在Safari上运行良好,但IE不会根据新图像的大小调整显示大小。我在src更改上有一个.load处理程序(我在其中对img元素的类进行了一些更改)。。。如果我知道如何访问图像的实际大小,我可以设置img元素的高度和宽度属性。这些价值观是否可以在某个地方获得?如果没有,是否有其他方法以新的大小显示图像?我会研究其他解决方案,但您确实可以直接访问该信息

我的DOM中有一个img元素。根据用户操作,我计算图像的URL,并更改图像元素的src属性(使用jQuery)。新图像的大小与旧图像的大小不同。这在Safari上运行良好,但IE不会根据新图像的大小调整显示大小。我在src更改上有一个.load处理程序(我在其中对img元素的类进行了一些更改)。。。如果我知道如何访问图像的实际大小,我可以设置img元素的高度和宽度属性。这些价值观是否可以在某个地方获得?如果没有,是否有其他方法以新的大小显示图像?

我会研究其他解决方案,但您确实可以直接访问该信息

var myImage = new Image();
myImage.src = $("image selector goes here").attr('src');
myImage.onload = function() {
  alert(myImage.width + "," + myImage.height);
}

我也有同样的问题,但这解决了

$("#img").removeAttr("height").removeAttr("width").attr("src", newsrc);

我在Chrome工作,而不是IE,但我也遇到了同样的问题,我想我会和其他遇到这个问题的人分享。我通过在更改源之前从图像中删除“style”属性来解决此问题,即:

myImg.removeAttribute('style').setAttribute('src',newSrc)


感谢您的建议,但遗憾的是,当我更改图像的src并加载新大小的图像时,img元素仍然报告初始宽度和高度值,而不是新加载的图像(在IE上,也就是说,图像的大小由Safari调整)。请尝试直接通过url加载图像,而不是使用
attr('src')
方法。比如说
myImage.src=”http://example.com/awesome.gif“
然后检查宽度。我看不出它怎么可能报告相同的宽度,因为它应该不知道。这是一种痛苦,因为它向您的服务器发送了两个图像请求,但如果存在缓存,这不应该是一个问题。我怀疑渲染引擎会使用第一个图像进行布局。后续图像加载不会强制重新显示。为了避免这个问题,我重写了我的整个方法。如果其他人也有同样的问题,请发布你的解决方案,然后接受答案。我不知道这是怎么回事。如果我错了,请纠正我,但从我所看到的高度和宽度不是DOM属性,而样式是。删除Chrome中的“样式”功能,请参见我的答案。