2

我正在研究一些 jQuery 来调整页面上的图像大小。这个块工作正常:

var size = 350;
$("img").each(function () {
    if ($(this).height() > $(this).width()) {
        var h = size;
        var w = Math.ceil(($(this).width() / $(this).height()) * size);
    }
    else {
        var w = size;
        var h = Math.ceil(($(this).height() / $(this).width()) * size);
    }
    $(this).css({ "height": h, "width": w });
});

问题是小图像被放大了。没问题,另外一个 if 语句应该可以解决这个问题!

var size = 350;
$("img").each(function () {
    if ($(this).height() > size || $(this).width() > size) { //Always false
        if ($(this).height() > $(this).width()) {
            var h = size;
            var w = Math.ceil(($(this).width() / $(this).height()) * size);
        }
        else {
            var w = size;
            var h = Math.ceil(($(this).height() / $(this).width()) * size);
        }
        $(this).css({ "height": h, "width": w });
    }
});

我在哪里错了?

4

2 回答 2

3

问题是我的脚本在加载页面上的图像之前触发,即使脚本标签位于页面底部。那里吸取了教训!我将 .each 更改为 .load,这对我的目的来说很好。

更好的解决方案可能是将其包装在$("window").load()事件或$(document).ready().

于 2012-10-27T01:20:39.887 回答
1

您的问题可能是您认为您正在从组件中获取值,而实际上您正在null其他地方获取值(或没有获取除 之外的任何值) 。

一种快速而肮脏的方法是:

alert(thatDarnedValue);

或者,如果您知道如何,将其写入控制台窗口、开发 DIV 或您用于调试的任何内容,然后实际查看其中的内容。

我经常感到惊讶——“应该存在”——体验。

当我们在不同的准备阶段检查图形组件的值时,通常会出现这种陷阱。文档可能已加载但尚未准备好等。

于 2012-10-27T10:56:40.257 回答