2013-02-28 71 views
0

我的名字是埃塞基耶尔,我是新的jQuery动态改变img元素的src并获得宽度多次

我想动态改变的src和获得图像的宽度,它的显示。

我有一个img标签,带有一个ID(“idImg”)。

问题是,我的代码只适用于第一次src更改,而且我必须多次更改(迭代),但我只会向您显示2个硬编码更改。

 $("#idImg").attr("src", scrString); //src field changes ok 
     alert($("#idImg").width()) // ok, this is the real width. 
     $("#idImg").attr("src", scrStringANOTHER); //src field changes ok 
     alert($("#idImg").width()) // nope, it keeps the same width than the last one. 

我不知道,只是不能找出问题是什么

编辑:我知道我必须要等到它加载,但如果我的改变src多不工作倍。我需要多次更改src,并检查每幅图像的结果宽度。

任何帮助?

Ty非常多

Ezequiel。

+1

问题是你没有给图像的时间来加载。 – 2013-02-28 20:16:01

回答

0
$("#idImg").load(function() 
{ 
    alert($(this).width()); 
}); 

绑定到图像的加载事件,此时宽度将准备就绪。

解决这个问题的另一种方法是将图像加载到不同的img中,然后在加载后将其交换出来。请参阅本上预装的图像,以便主题:Preloading images with jQuery

+0

是的,我试过了加载事件.. 它打印第一个,而不是其他人。 我必须申报一次吧?它会在那里每当我更改src – 2013-02-28 20:28:26

0
$(document).ready(function(){ 
    $('#idImg').on('click', function() { 
     $(this).attr('src', 'newimage.png'); 
    }).load(function() { alert(this.width); }); 
}); 

查看完整的例子:http://jsfiddle.net/k9rn7/

+0

这会工作,但问题是我需要多次更改src并获取倍数“宽度”。 我的意思是,每次我更改src(我有一个“src字符串”数组),我想知道该图像的宽度。 我该怎么做? – 2013-03-01 16:26:14