Hallo Jo,
du darfst ein wrapped set nicht für längere Zeit speichern. In deinem Fall müsste es schon genügen, wenn Du in loadLobby statt $loader das Set neu holst mit $("loader_wrapper");
Dazu kommt noch, dass Du bei Einsatz der .queue() Funktion die Animation unterbrichst. Laut Doku bekommt die Funktion, die du in die Queue stellst, einen next-Parameter mit. Das ist eine Funktionsreferenz, die Du zum Abschluss Deiner Queue-Funktion aufrufen musst, damit die Animationsqueue weiter abgearbeitet wird. Ob das für Dich tatsächlich ein Thema ist, weiß ich nicht, weil dein loadLobby() ja einen neuen Ajax-Call macht, der ohnehin eine neue Asynchronität ins Spiel bringt. Aber möglicherweise ist durch den fehlenden Aufruf von next() die Queue-Verarbeitung gestört.
Also - schreib in deinem success-Handler vom login mal
$('#loader_wrapper')
.fadeIn( 1000 )
.queue(function(next){
loadLobby( response );
next();
});
und schmeiß die $loader-Variable weg. Schreibe überall, wo $loader steht, $('#loader_wrapper'). Es vergeht zu viel Zeit, als dass es gut sein könnte, DOM Referenzen in Variablen zu halten.
Über die User-Experience deines fadeIn und fadeOut will ich lieber nicht reden. Du hast Delays und Fades, die den User warten lassen während dein Server längst fertig ist. Zumindest den .delay(2000) würde ich rauswerfen.
Gruß
Rolf