我有一个具有以下结构的ul:

<ul>
<li><img><div class="infotext">some variable length text</div></li>
<li><img><div class="infotext">some variable length text</div></li>
<li><img><div class="infotext">some variable length text</div></li>
<ul>


根据窗口高度为图像赋予动态高度,并且它们的宽度是自动的(并且可变,我的图像具有不同的比例,但是我将它们保持相同的高度),所以我想使我的infotext div与此匹配可变宽度。我尝试了以下方法:

jQuery('.infotext').width(jQuery(this).closest('img').width());

jQuery('.infotext').width(jQuery('.infotext').closest('img').width());

jQuery('.infotext').width(jQuery('.infotext').parent().width());


但他们都不在工作。到目前为止,我很困惑...

更新:
我已经弄清楚是什么原因造成的,但是还没有解决的办法。我的图像正在使用延迟加载,这会干扰获取正确的图像高度。我需要找出发生延迟加载后如何获取图像大小...

最佳答案

image标签是前一个元素,而不是祖先,因此.closest().parent()将不起作用。

尝试:

jQuery('.infotext').each(function(){
    $(this).width(jQuery(this).prev('img').width());
})


jsFiddle example

09-25 17:20