1

也许这是一个非常愚蠢的问题,但对我来说还不够愚蠢,因为我似乎无法弄清楚(即使使用谷歌)。

我有这个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。当我有一个已经在页面上的图像时,它只是......工作?!

所以,问题是:为什么这不起作用,为什么它在其他页面上起作用?

提前致谢

编辑: 向小提琴添加了一个示例:http: //jsfiddle.net/nN9ce/

4

4 回答 4

3

.width()获取元素的大小,而不是图像本身。当脚本运行时,虽然图像已添加到 dom,但它们尚未加载,因此元素的宽度为 0(即使您要加载到这些元素中的图像宽度为 128)。

加载图像后,您需要运行回调。

于 2013-06-17T18:50:25.237 回答
0

您尚未在图像上设置宽度和高度属性。尝试进行此更改:

.attr("src", "http://www.logoquizantwoorden.nl/wp-content/uploads/2012/06/Logo-Quiz-uitleg.png")
.attr("height", "128")
.attr("width", "128")
.addClass("thumb")

小提琴:http: //jsfiddle.net/sBSnS/

于 2013-06-17T18:52:59.550 回答
-1

不确定方法问题,但您可以使用该属性

width

所以,你会有这个。

$(".thumb").each(function () {
    console.log(this.width);
});
于 2013-06-17T18:47:11.063 回答
-1

试试这个:

$(".thumb").each(function (idx, thumb) {
  console.log($(thumb)); 
   console.log($(thumb).width());
});

这是更新的小提琴:

http://jsfiddle.net/nN9ce/2/

于 2013-06-17T18:55:05.043 回答