根据父宽度jQuery调整图像大小

根据父宽度jQuery调整图像大小,jquery,width,Jquery,Width,我正在尝试缩放图像以适应其父元素宽度,尤其是对于位于表中的图像 问题在于,在确定父元素的宽度时,不同的浏览器和平台的行为似乎有所不同 因此,我尝试在$(文档)中获取父td元素的宽度。准备好了吗: $('td').each(function () { var width = $(this).width(); $(this).width(width); }); 然后在$(窗口).load(应该加载图像时)中,我尝试根据td的宽度css样式设置图像的宽度: var parentWid

我正在尝试缩放图像以适应其父元素宽度,尤其是对于位于表中的图像

问题在于,在确定父元素的宽度时,不同的浏览器和平台的行为似乎有所不同

因此,我尝试在
$(文档)中获取父td元素的宽度。准备好了吗

$('td').each(function () {
    var width = $(this).width();
    $(this).width(width);
});
然后在
$(窗口).load
(应该加载图像时)中,我尝试根据td的宽度css样式设置图像的宽度:

var parentWidth = $(this).parent().width();
if ($(this).closest('td')) {
    parentWidth = $(this).closest('td').css('width').replace('px', '');
}
但这似乎不可靠。它有时可以工作,在某些浏览器中也可以,但有时会失败得很惨,为
td
宽度提供了错误的值

我希望能够在加载图像之前获得
td
的宽度,这样宽度就不会因图像扩展而扭曲

当然,如果IE8及其以下版本不支持“最大宽度”和“最大高度”,这一切都不是必需的,但事实并非如此

如何在加载图像之前完成此操作并获取父级宽度

顺便说一句:
td
可以在100%宽度表中有一个宽度百分比值作为开始。

根据,IE 7和IE 8实际上支持最大高度和最大宽度。只有IE6做不到这一点(并且有许多文档记录的变通方法可能适合您的目的,以及IE的条件注释,它们可以用来沙箱任何代码,以使任何给定版本的IE正常工作)


您是否尝试过简单地使用
width:100%吗?它应该适用于所有浏览器,并且不需要大量JavaScript,只要您在加载时设置父元素的宽度(如果您在加载后更改宽度,您可能需要一点JavaScript来“刷新”图像大小,但它应该比您现在所做的要小得多).

此行不正确:

if ($(this).closest('td'))
最接近返回一个包含0或1个元素的jQuery对象。你可能是说:

if ($(this).closest('td').length == 1)

嗯,将宽度设置为100%不起作用,因为有些图像太大,所以溢出。这就是为什么我需要最大宽度。据我所知,它不起作用,至少如果你把它设置为100%。但欢迎你在这里回答:这个问题哪里有悬赏。我会再试一次,但上次检查时它没用。