也许这是一个非常愚蠢的问题,但对我来说并不愚蠢,因为我似乎无法解决这个问题(即使是谷歌)。
我有这个jquery:
$.each(items, function (key, t) {
$("#list").append(
$("<li />")
.append($("<img />")
.attr("src", "path/to/" + t.Thumbnail)
.addClass("thumb"))
.append($("<span />")
.html("<b>" + t.Title + "</b><br />" + t.Description)));
});
在此之后,我通过拇指循环做一些造型(尺寸和比例,这里不相关)
$(".thumb").each(function () {
console.log($(this));
});
在控制台中我看到了:
[img.thumb, context: img.thumb, jquery: "1.9.0", constructor: function, init: function,
selector: ""…]
0: img.thumb
context: img.thumb
length: 1
__proto__: Object[0]
这是什么情境?使用$(this).width()时会出现错误或0.当我有一个已经在页面上的图像时,它只是......有效吗?!
所以,问题是:为什么这不起作用,为什么它在其他页面上起作用?
提前致谢
修改 为Fiddle添加了一个示例: http://jsfiddle.net/nN9ce/
答案 0 :(得分:4)
.width()
获取元素的大小,而不是图像本身。当脚本运行时,尽管图像已添加到dom中,但它们尚未加载,因此元素的宽度为0(即使要加载到这些元素中的图像的宽度为128)。
您需要在加载图像后运行回调。
答案 1 :(得分:0)
您尚未在图像上设置宽度和高度属性。尝试进行此更改:
.attr("src", "http://www.logoquizantwoorden.nl/wp-content/uploads/2012/06/Logo-Quiz-uitleg.png")
.attr("height", "128")
.attr("width", "128")
.addClass("thumb")
答案 2 :(得分:-1)
不确定方法问题,但您可以使用属性
width
所以,你有这个。
$(".thumb").each(function () {
console.log(this.width);
});
答案 3 :(得分:-1)
请改为尝试:
$(".thumb").each(function (idx, thumb) {
console.log($(thumb));
console.log($(thumb).width());
});
这是更新的小提琴: