为所有图像添加宽度和高度attr

时间:2015-10-06 10:21:44

标签: javascript jquery

我需要通过javascript / jquery将widthheight属性添加到页面上的所有图片中。这是由于我们的系统使用的工具。我认为每个循环都很简单,添加高度/宽度attr就足够了。不幸的是,这似乎不起作用

DEMO https://jsfiddle.net/z86xnqd7/

$('body').find('img').each(function (index) {
    var theWidth = index.width();
    var theHeight = index.height();

    index.attr({
        "width": theWidth,
        "height": theHeight
    });
});

检查元素时,您会注意到没有添加宽度/高度attr

3 个答案:

答案 0 :(得分:1)

jsFiddle:https://jsfiddle.net/CanvasCode/z86xnqd7/6/

您需要在load事件中执行每个操作,在检查其高度和宽度之前,您需要确保已加载图像。您还想使用$(this)而不是index。

$(function () {
    $('img').load(function () {
        var theWidth = $(this).width();
        var theHeight = $(this).height();

        $(this).attr({
            "width": theWidth,
                "height": theHeight
        });

    });
});

答案 1 :(得分:-1)

这里的问题是你试图从索引得到宽度和高度,这只是一个数字而不是jQuery对象。试试这个 - 它会完成这项工作:

$('body').find('img').each(function(i, elem) {
        var $this = $(this);
        var theWidth = $this.width();
        var theHeight = $this.height();

        $this.attr({"width": theWidth, "height": theHeight});
});

参见js fiddle:https://jsfiddle.net/g4nn2pk0/2/

答案 2 :(得分:-1)

这是因为index是真实的迭代索引(例如1,2 ......)。使用$(this)或将第二个参数添加到标题function (index, element) {}

$.each($('img'), function () {
    $(this).attr({
        width: $(this).width(),
        height: $(this).height()
    });
});