jQuery each()工作很奇怪

时间:2012-10-09 12:44:33

标签: jquery slideshow

我试图获得一些嵌套图像的宽度。我有以下HTML代码:

<div class="slide" id="Slide1">
        <a href="#" title="Some Title" target="_blank">
             <img src="images/photo1.jpg" alt="Slide 1" class="slideImg">
        </a>
        <div class="caption" style="width: 476px">
            <h1>Stuff</h1>
            <p>Some Stuff Description</p>
        </div>
    </div>
<div class="slide" id="Slide2">
        <a href="#" title="Some Title" target="_blank">
             <img src="images/photo.jpg" alt="Slide 2" class="slideImg">
        </a>
        <div class="caption" style="width: 476px">
            <h1>Stuff</h1>
            <p>Some Stuff Description</p>
        </div>
    </div>

使用jQuery,我想得到每个IMG的宽度,然后我可以设置(1024px - 那个宽度)到正确的“CAPTION DIV”(<div class="caption">)。这两个脚本都给了我一个宽度为“0”的第二个图像,这是一个不可能的事情。

$('.slideImg').each(function(){
    alert($(this).width());             
 });
$('.slide').each(function(){
    alert($(this).attr('id'));
    alert($(this).find('a').find('img').width());
});

提前致谢!

4 个答案:

答案 0 :(得分:1)

我刚检查了它的工作正常。

   $(document).ready(function(){

      $('.slide').each(function(){
        alert($(this).attr('id'));
            alert($(this).find('a').find('img').width());
});

    });

答案 1 :(得分:0)

我也是,它对我有用。

您使用的是哪种浏览器?

我在Chrome 22,IE 9,Firefox 15中进行了测试

答案 2 :(得分:0)

您可以检查图像是否隐藏。因为jquery在计算隐藏元素的维度方面存在问题

答案 3 :(得分:0)

当jQuery运行时,可能是图像没有完全加载。见这里:Official way to ask jQuery wait for all images to load before executing something

此外,clientWidth将为您提供图像的实际渲染宽度

您可以尝试:

$('.slide').load(function() {
  alert(this.clientWidth);
})