javascript - 为什么这总是评估为假?

标签 javascript jquery boolean

我正在开发一些 jQuery 来调整页面上图像的大小。该 block 工作正常:

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 });
    }
});

我哪里出错了?

最佳答案

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

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

关于javascript - 为什么这总是评估为假?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13096200/

相关文章:

javascript - 在reactJS中使用setState重新渲染时如何调用其他构造函数?

javascript - 当我在 jquery fullcalendar 中将 slotMinutes 设置为 50 值时出现错误

javascript - 带有 SVG 数据 URI 的 img 将不会在 Firefox 中显示

r - 如何将本地语言表达的字符串 boolean 值转换为 boolean 值

java - 我对这些 boolean 方法做对了吗?

javascript - jQuery each() 不会迭代所有元素

javascript - 图像 slider 不允许在移动 View 中下拉导航栏

javascript - 如何将 (screen.width < X) 与 $(window).scroll(function() 合并

c++ - 在 boolean 数组中输入

javascript - amCharts 指南中的循环