我需要通过javascript / jquery将width
和height
属性添加到页面上的所有图片中。这是由于我们的系统使用的工具。我认为每个循环都很简单,添加高度/宽度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
答案 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()
});
});