JQuery变量在函数奇怪的行为中

时间:2015-08-12 12:47:55

标签: jquery loops variables each behavior

我正在编写脚本,调整图像大小以适应容器大小。我写下了以下代码:

$(function () {
    $('.postbody .content img').each(function () {
        var containerWidth = $(this).parent().width();
        if ($(this).width() > containerWidth) {
            $(this).width(containerWidth);
            $(this).wrap('<a href="' + $(this).attr('src') + '" target="_blank"></a>');
        }
    });
});

但它只适用于循环中的第一个元素。根据我之前在向变量分配jQuery方法后遇到问题的经验,我稍微更改了代码:

$(function (){
    $('.postbody .content img').each(function () {
        if ($(this).width() > $(this).parent().width()) {
            $(this).width( $(this).parent().width() );
            $(this).wrap('<a href="'+$(this).attr('src')+'" target="_blank"></a>');
        }
    });
});

现在它完美无缺。但我无法弄清楚如何。每个循环的每个函数调用都不应该containerWidth变量获得新值吗?

编辑:请注意,所有容器的大小相同。

1 个答案:

答案 0 :(得分:2)

试试这个,

$(function () {
    $('.postbody .content').each(function () {
        var containerWidth = $(this).width();
        var img = $(this).find("img");
        if (img.width() > containerWidth) {
            img.width(containerWidth);
            img.wrap('<a href="' + img.attr('src') + '" target="_blank"></a>');
        }
    });
});

或者您可以使用CSS

执行相同的操作

只需将img tag max-width设为100%

实施例

img {
   max-width: 100%;
}