Jquery 图像不';不要变小

Jquery 图像不';不要变小,jquery,Jquery,我有一个表格,每个图像都在表格单元格内的一个div中。由于有许多不同大小的图像,我编写了以下代码,如果它们的高度大于200px,或者如果它们的宽度大于118px,则使它们变小,但此脚本无法正常工作,有时在我刷新页面时会工作。我做错了什么 var tableImages = $("table td>div> img"); tableImages.each(function () { var curTableImgHeight = $(this).

我有一个表格,每个图像都在表格单元格内的一个div中。由于有许多不同大小的图像,我编写了以下代码,如果它们的高度大于200px,或者如果它们的宽度大于118px,则使它们变小,但此脚本无法正常工作,有时在我刷新页面时会工作。我做错了什么

var tableImages = $("table td>div> img");
        tableImages.each(function () {
            var curTableImgHeight = $(this).height();
            var curTableImgWidth = $(this).width();

            if (curTableImgHeight > 200) {
                $(this).css({ "max-width": "188px", "height": "100%" });
            }
            else if (curTableImgWidth > 188) {
                $(this).css({ "max-height": "200px", "width": "100%" });

                var parDivHeight = $(this).parent().height();
                var topmargin = (parDivHeight - $(this).height()) / 2;
                $(this).css('margin-top', topmargin);
            }


        });

我想您可能想使用
$(window.load()

$( window ).load(function() {
    var tableImages = $("table > td > div > img");
    ....
});

希望这有帮助。

我认为您不应该在这里使用jQuery

.img {
    max-width:188px;
    max-height:200px;

    /* set min width and height if needed */
}
简洁


如果你有不同大小的图像,你不会让它们看起来完全一样。您必须选择版面宽度或高度,并说明所有图像都必须匹配该宽度…

听起来您是在加载图像之前检查图像大小。可以在加载图像之前准备好,但图像不准确size@A.Wolff事实上,这就是问题所在。OP声明该脚本在刷新时工作——这是因为所有图像都在缓存中,在DOM就绪时提供了正确的大小。或者,您可以事先在文档(=服务器端)中明确说明图像大小,这样您就可以使用domready。是的,使用window
onload
处理程序是解决OP问题的最简单方法guess@A.Wolff,谢谢你的建议。定义两者,当比例不匹配时,高度和宽度100%会使图像失真,但在其他情况下,这是一个很好的解决方案。或者不幸的是,这也不起作用(在纵向和横向模式下都有图像的情况下),因为这可能会导致图像不尊重容器的大小。