If you want to do something after the fading is finished, create a callback function that is triggered, when the animation comes to an end:
var that = $(this);
if (a < b) $(this).fadeTo(500,1, function() {
alert ("Do something afterwards");
that.children().someAction();
});
I hope, this is what you want.
To get your example working you can use this:
$(window).scroll(function(d,h) {
tiles.each(function(i) {
a = $(this).offset().top + $(this).height();
b = $(window).scrollTop() + $(window).height();
var that = $(this);
if (a < b && true != $(this).data('faded')) {
$(this).data('faded', true).fadeTo(500,1, function() {
that.find('div').animate({left: '+=300', top: '+=12'}, 4500);
});
}
});
});
Here's a demo: http://jsfiddle.net/mSRsA/