2016-03-22 16 views
2

Ich verwende slittoggle(); um ein Banner und localStorage umzuschalten, um sich an den letzten Status des umgeblendeten Banners zu erinnern.LocalStorage arbeitet nicht mit slideToggle (arbeitet mit toggle)

localStorage funktioniert gut mit toggle(); , obwohl mit slideToggle(); es geht nicht mehr. Wenn ich eine Animation hinzufüge (doggle (500);), funktioniert localStorage auch nicht mehr.

$('#button').click(function() { 
     $(this).siblings().slideToggle(); 
     localStorage.setItem('display', $(this).siblings().is(':hidden')); 
    }); 
    var block = localStorage.getItem('display'); 
    if (block == 'true') { 
     $('#banner').hide() 
    } 

Was könnte das Problem sein?

JSFiddle: http://jsfiddle.net/9pj9ws5u/12/

Antwort

3

Dies ist, wie es getan werden sollte:

$(this).siblings().slideToggle(function() { 
    // Code is triggered once the animations finished and the element is hidden 
    // $(this) - reference to the SIBLING element 
    localStorage.setItem('display', $(this).is(':hidden')); 
}); 

Ihr Code funktioniert nicht, weil Sie, wenn es überprüft, bevor die Animation abgeschlossen versteckt war. Wenn Sie die Logik in die Animationsrückruffunktion einfügen, stellen Sie sicher, dass sie aufgerufen wird, sobald die Animation beendet ist.

+0

Es könnte gut sein, eine Erklärung hinzuzufügen, warum es vorher nicht funktioniert hat. – JCOC611

+0

@ JCOC611 Sie haben Recht. Zu meiner Antwort hinzugefügt –