2016-03-24 18 views
0

Bei Fensterladefunktion überprüfe ich, ob es ein Cookie gibt und ich füge eine CSS-Klasse hinzu, um ein Element auszublenden. Aber es ist nicht schnell genug, wenn man die Seite öffnet, zeigt es das versteckte Element für eine Sekunde. Gibt es einen besseren Weg dies zu tun, ohne das versteckte Element zu sehen?Check cookie und addClass, aber es ist zu langsam

Dies ist das Skript verwende ich (ich benutze jQuery):

$(window).load(function() { 
    if ($.cookie('note')) { 
     $('.note').addClass('hide'); 
    } 
}); 
+1

Verstecke es zuerst und zeige es dann nur, wenn der Cookie ** nicht existiert **. – Liam

+0

Haben Sie versucht, Dokument bereit im Gegensatz zu Fenster laden? –

+0

FYI [load() ist veraltet] (http://stackoverflow.com/questions/12643160/load-method-deprecated) und sollte nicht mehr verwendet werden. – Liam

Antwort

2

einfach die Funktion invertieren, um nur das Bild zeigen, wenn das Cookie nicht existiert:

$(window).ready(function() { 
    if (typeof $.cookie('note') === 'undefined') { 
     $('.note').removeClass('hide'); 
    } 
}); 

Offensichtlich hat Ihr Der Standardstatus sollte die Klasse hide enthalten.

auch, wie erwähnt verwenden Sie nicht load() es ist veraltet, funktioniert nicht sehr gut und fügt eine unnötige Verzögerung zu Ihrem Code ausgeführt werden.

+0

Ich versuche das, aber das funktioniert nicht: if (typeof $ .cookie ('note') === 'undefined' –

+0

Was passiert [wenn Sie es debuggen?] (Http://stackoverflow.com/questions/988363/how-can-i-debug-mein-JavaScript-Code) – Liam

+0

Ich bekomme Folgendes: 116 Uncaught TypeError: $ .cookie ist keine Funktion https://drive.google.com/file/d/0B4_0PpHmsIheWU5JZkRGT3RWNkE/ view? usp = sharing –