2016-11-28 101 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"); 
}