页面重新加载有时不显示按钮

时间:2016-01-27 13:35:20

标签: javascript jquery cookies

所以现在我正在制作一个可以折叠并重新打开的仪表板侧面菜单。除了一个问题,一切都很好。假设我折叠了我的侧边菜单,然后开始一遍又一遍地按下刷新页面,速度约为1次/秒。大约2/10的页面重新加载将不会显示应该在那里的按钮。这就是我得到的:

$(document).ready(function () {
    $("#home").click(function () {
        "use strict";
        $.cookie('open', false);
        $(this).hide();
        $("#home2").show();
        $("#nav").slideToggle('fast');
        $(".content").animate({marginLeft: "0px"}, 200, function () {});
        $(".content").animate({width: "100%"}, 200, function () {});
    });

    $("#home2").click(function () {
        "use strict";
        $.cookie('open', true);
        $(this).hide();
        $("#nav").slideToggle('fast');
        $("#home").show();
        $(".content").animate({marginLeft: "220px"}, 200, function () {});
        $(".content").animate({width: "100%"}, 200, function () {});
    });

    if ($.cookie('open') === 'false') {

        $("#nav").slideToggle('fast');
        $(".content").animate({marginLeft: "0px"}, 1, function () {});
        $(".content").animate({width: "100%"}, 1, function () {});
        $.cookie('open', false);
        $("#home").hide();
        $("#home2").show();
    }
});

我使用cookies来了解侧边栏菜单是否已启动。当cookie打开== false时,侧边栏关闭,当cookie打开== true时,它会被打开。

为了提供更多细节,ID“home2”是某些时间没有显示的ID。

每当我重新加载页面时,有几毫秒我可以看到

    $("#nav").slideToggle('fast');
    $(".content").animate({marginLeft: "0px"}, 1, function () {});
    $(".content").animate({width: "100%"}, 1, function () {});

做其工作的东西。只要发生这种情况,按钮就会显示出来。但有时在页面上重新加载,页面不会这样做,它只是快速重新加载闪电,我无法看到前面提到的代码完成它的工作;这是#home2按钮决定不弹出的时候,这让我相信声明中的东西没有被执行。

这是一个奇怪的问题,我不知道为什么它会像这样......

编辑:将声明改为:

if ($.cookie('open') === 'false') {
    $("#home2").show();
    $("#home").hide();
    $(".content").animate({marginLeft: "0px"}, 1, function () {});
    $(".content").animate({width: "100%"}, 1, function () {});
    $.cookie('open', false);
    $("#nav").slideToggle('fast');
}

还有同样的问题。

2 个答案:

答案 0 :(得分:0)

可能的机会可能是网络连接缓慢。

否则在刷新时脚本未正确加载。

缓存也可能成为给定问题的障碍。

答案 1 :(得分:0)

一种选择是稍后在页面循环中使用

执行此操作
$(window).load(function(){ 
    //my code here 
}); 

而不是准备好文件;这是做什么的? api.jquery.com/ready