Your selector '#lightbox, .lightbox_panel' matches an element that is already hidden. Bearing in mind that .fadeOut() and a callback are called for each element that the selector selects, you should also understand that for already hidden elements, complete callback is called immediately (the work that it should do is completed, right?).
To eliminate the "instant completion" here, you can simply hide the elements :visible that really need to be hidden, for example:
$('#lightbox:visible, .lightbox_panel:visible').fadeOut(300,function(){ $('.instructor_video').css('left','150%'); $('.instructor_bio').css('left','50%'); });
Or you can get the same elements differently by calling .filter() , for example:
$('#lightbox, .lightbox_panel').filter(':visible')
source share