I’m trying to write some jQuery code that gets the combined width of images that have been cloned and resized before they are shown, the problem is that before they are added to the DOM the width is always 0.
(function($){
var $images = createDiv(),
totalWidth = 0;
//loop through a list of images
$("#images > li > img").each(function(){
var $this = $(this),
$img = $this.clone(); //createa duplicate of the images
$img.height(100); //resize each duplicate to a set height
totalWidth += $img.width(); //always equals zero
//this always results in 0 too
//totalWidth += $img.get(0).clientWidth;
//add the cloned image to the div
$images.append($img);
//remove full sized image to reattach later
$this.remove();
});
$images.hide();
$("body").append($images);
$("#show").on('click',function(){
$images.show();
});
function createDiv(){
return $('<div id="imgs"></div>');
}
}(jQuery));
Here is a fiddle of a complete example: http://jsfiddle.net/bittersweetryan/9c3SH/2/
How can I get the total combined width of the resized images before they are added to the DOM?
You first need to append the image to the DOM, for it to have a
widthattribute, as an unattached DOM node it has no ‘physical’ properties. With that said, I suggest this:JS Fiddle demo.