2016-11-28 98 views
0

我不知道是否有人可以請求幫助,我使用'https://nnattawat.github.io/slideReveal/'中的jquery.slidereveal.js,如果我手動點擊觸發器打開和關閉菜單,代碼插件本身也能正常工作。jQuery SlideReveal不會顯示onLoad

但是,我會喜歡它默認的頁面加載,無論用戶以前點擊過的任何狀態。

例如,如果他們點擊顯示,然後導航到另一個屏幕,當JS再次加載時,我希望它檢查保存到localStorage的最後狀態,如果它是true,則自動顯示隱藏的面板。

請參閱下面我的代碼:

$(document).ready(function() { 
    var panelOpen = localStorage.getItem("panelOpen"); 

    if (panelOpen == "true") { 
     $("#slidermenu-bar").slideReveal("show"); 
    } 
}); 

$(function() { 
    $("#slidermenu-bar").slideReveal({ 
     push: false, 
     position: "left", 
     trigger: $(".handle"), 
     shown: function (obj) { 
      localStorage.setItem("panelOpen", true); 
      obj.find(".handle").html('<span class="glyphicon glyphicon-chevron-left"></span> Open'); 

     }, 
     hidden: function (obj) { 
      localStorage.setItem("panelOpen", false); 
      obj.find(".handle").html('<span class="glyphicon glyphicon-chevron-right"></span> Close'); 
     } 
    }); 
}); 

如果任何人都可以幫助,那將是非常讚賞:-)

回答

1

你的代碼是真正的接近是工作。

第一個,據我所知,$(document).ready(function() {$(function() {都是「就緒」區塊。
如果它們之間存在差異,那麼它是非常有利的,因爲我從來沒有注意到!

因此,您可以將所有腳本放在同一個「就緒」區塊中。
現在剛剛實例化slideReveal$("#slidermenu-bar")之前檢查在本地存儲。

;)

+0

好吧,我已經試過了。我現在有'if(logoutPanelOpen ==「true」){var slider = $(「#slidermenu-bar」)。slideReveal({push:false,position:「left」}); slider.slideReveal(「show」) ;}'我可以簡單地看到它彈出,然後再次隱藏。如果我使用'if(logoutPanelOpen ==「true」){var slider = $(「#slidermenu-bar」)。slideReveal(); slider.slideReveal(「show」);}'屏幕向右滑動,但手柄和隱藏面板留在他們的位置,直到手柄被點擊並滑出面板,這是非常令人沮喪的LOL – iggyweb

+0

我用一個小'setTimout()'更新了。 ;) –

+1

你遇到了問題,首先,從我所知道的$(document).ready(function(){和$(function(){都是「準備就緒」的塊。首先打開它,然後功能塊在文檔之外準備就緒,再次關閉它。謝謝,現在可以工作了。 – iggyweb

0

謝謝Louys帕特里斯·貝塞特,即確定相關的準備塊的問題,請參見下面的工作代碼:

var panelOpen = localStorage.getItem("panelOpen"); 

var slider = $("#slidermenu-bar").slideReveal({ 
    push: false, 
    position: "left", 
    trigger: $(".handle"), 
    shown: function (obj) { 
     localStorage.setItem("panelOpen", true); 
     obj.find(".handle").html('<span class="glyphicon glyphicon-chevron-left"></span> Open'); 

    }, 
    hidden: function (obj) { 
     localStorage.setItem("panelOpen", false); 
     obj.find(".handle").html('<span class="glyphicon glyphicon-chevron-right"></span> Close'); 
    } 
}); 

if (panelOpen == "true") { 
    slider.slideReveal("show"); 
} else { 
    slider.slideReveal("hide"); 
}