Each time, select an element, this will create a new jQuery object. I think this is the only way if the element changes.
var a = $('#a'); for(var i=0; $('#a div').length < 20; ) { a.append($('<div>'+(i++)+'</div>')); if(i==50) break; }
EDIT: Or this:
for(var i=0, a=$('#a'); a.children('div').length < 20; ) { a.append($('<div>'+(i++)+'</div>')); if(i==50) break; }
Or this, only one selector:
var a = $('#a'); var length = a.children('div').length; while(length < 20) { a.append($('<div>'+(length++)+'</div>')); }
source share