Javascript 基于子图像设置DIV宽度

Javascript 基于子图像设置DIV宽度,javascript,jquery,Javascript,Jquery,我正在尝试根据子图像设置DIV width。如果只有一个DIV,下面的代码可以工作。当有更多DIV时,它将只使用第一个子图像(第一个DIV)的宽度 任何帮助都将不胜感激。谢谢在第3行,您有一个对象$('.img\u thumb img')的引用: 它总是指向第一个元素。当您在中时,需要使用$(this)。每个都以当前元素为目标: var img_width = $(this).width() 在.load()回调中,使用this引用感兴趣的特定图像。去掉.each() 试试这个: $('.im

我正在尝试根据子图像设置DIV width。如果只有一个DIV,下面的代码可以工作。当有更多DIV时,它将只使用第一个子图像(第一个DIV)的宽度


任何帮助都将不胜感激。谢谢

在第3行,您有一个对象
$('.img\u thumb img')的引用

它总是指向第一个元素。当您在
中时,需要使用
$(this)
。每个
都以当前元素为目标:

var img_width = $(this).width()
.load()
回调中,使用
this
引用感兴趣的特定图像。去掉
.each()

试试这个:

$('.img_thumb').each(function(){
   var _this = $(this);
   $(this).find('img').load(function(){
      _this.css('width', $(this).width() + 'px');
   });
});

默认情况下,任何div都采用子元素的宽度(在您的示例中为img)。你为什么要这么做?@user那根本不是真的。
的默认宽度为
auto
,约为
100%
,减去任何边距。@Matt-clearification。。我的声明在显示时适用:仅限父级的内联块宽度:-moz-fit内容;作为firefox解决方案,值得注意。我在web上找不到webkit或trident实现。您需要为
img
选择器提供上下文,否则它将为
.load()
处理程序为每个图像绑定
.each()的每个迭代。像这样:
$('img',this)。加载(…)
$(this)。查找('img')。加载(…)
谢谢你-击败我:)祝贺你的50k。顺便说一句。感谢你的时间@matt ball,你的代码示例很有效。谢谢所有回答我问题的人。
var img_width = $(this).width()
$('img').load(function(){
    var $this = $(this),
        img_width = $this.width();
    $this.closest('.img_thumb').css('width', img_width + 'px');
});
$('.img_thumb').each(function(){
   var _this = $(this);
   $(this).find('img').load(function(){
      _this.css('width', $(this).width() + 'px');
   });
});