To make it work correctly, you need to work around xhr progress event, which is fired when all list items had been already created.
The xhr should know what you want to do −
var a = new XMLHttpRequest(); a.upload.li = li; a.upload.addEventListener('progress', function(e) { var pc = parseInt(event.loaded / event.total * 100); this.li.find(".progressbar").width(pc); }, false);