Ciao, così come scritto è un po' incasinato.
Intanto $(document).ready... equivale al DOM ready della pagina. Messo all'interno di una funziona ha poco senso.
Ammesso che tu voglia far sparire il tuo #preloader dopo 3 secondi di caricamento pagina basterebbe fare
Questo su page load e quindi sul caricamento oltre che del dom anche sulle risorse tipo immagini o quant'altro.codice:$(window).load(function(){ $('#preloader').delay(3000).fadeOut(); });
Per caricare al dom ready puoi sostituire con $(function(){.......});