jQuery 更改图像大小和包含的 Div
我有一个图像包装 div
来包含图像和标题。
使用以下内容,图像包装器 div
的大小设置为图像的宽度:
$('.imgright').each(function(){
$(this).width($(this).find('img').outerWidth());
});
如果依赖于父 div
类,我还希望使用不同的图像路径。以下方法有效:
$('.grid_12').each(function(){
$(this).find('img').each(function(){
$(this).attr("src", $(this).attr('src').replace('/StandardImage/','/MidSizeImage/'));
});
});
但是将它们放在一起并不总是可以设置图像包装器 div
的宽度。
$('.grid_12').each(function(){
$(this).find('img').each(function(){
$(this).attr("src", $(this).attr('src').replace('/StandardImage/','/MidSizeImage/'));
});
});
$('.imgright').each(function(){
$(this).width($(this).find('img').outerWidth());
});
有什么建议吗?
感谢 2 个非常快速的答案,我已经重组了我的代码并使用 .load()
函数来获取更改后的图像详细信息。
工作代码是:
$('.grid_12').each(function(){
$(this).find('img').each(function(){
$(this).attr("src", $(this).attr('src').replace('/StandardImage/','/MidSizeImage/'));
$(this).load(function(args){
var newWidth = $(this).outerWidth();
$(this).parent('.imgright').each(function(){
$(this).width(newWidth);
})
})
})
});
I have an image wrapper div
to contain image and caption.
Using the following the image wrapper div
is sized to be the width of the image:
$('.imgright').each(function(){
$(this).width($(this).find('img').outerWidth());
});
I also wish to use a different image path if dependent on a parent div
class. The following works:
$('.grid_12').each(function(){
$(this).find('img').each(function(){
$(this).attr("src", $(this).attr('src').replace('/StandardImage/','/MidSizeImage/'));
});
});
But putting these together does not always set the width of the image wrapper div
.
$('.grid_12').each(function(){
$(this).find('img').each(function(){
$(this).attr("src", $(this).attr('src').replace('/StandardImage/','/MidSizeImage/'));
});
});
$('.imgright').each(function(){
$(this).width($(this).find('img').outerWidth());
});
Any suggestions?
Thanks to 2 very quick answers I have restructured my code and used the .load()
function to get the changed image details.
Working code is:
$('.grid_12').each(function(){
$(this).find('img').each(function(){
$(this).attr("src", $(this).attr('src').replace('/StandardImage/','/MidSizeImage/'));
$(this).load(function(args){
var newWidth = $(this).outerWidth();
$(this).parent('.imgright').each(function(){
$(this).width(newWidth);
})
})
})
});
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
会不会是图片还没加载呢?
您可以在更改 ImagePath 时向图像添加加载处理程序
Could it be that the images have not loaded yet?
You could add a load handler to the image as you change the ImagePath
对于初学者来说,您可以利用链接使您的代码更加简洁:
现在,对于您的问题,发生的情况是您正在加载图像(通过更改它的 src),然后立即尝试获取其尺寸,而不首先检查查看图像是否已完成加载。
看起来这个问题可能会帮助您走向正确的方向:
如何使用 Javascript/jQuery 确定图像是否已加载?
For starters, you can leverage chaining to make your code a bit more succinct:
Now, as to your problem, what's happening is that you are loading an image (by changing it's src) and then immediately trying to get its dimensions without first checking to see if the image had finished loading yet.
It looks like this question may help steer you in the right direction:
How can I determine if an image has loaded, using Javascript/jQuery?