如何在刷新时选择菜单?

时间:2014-01-23 11:19:46

标签: jquery

在我的页面中滚动菜单时更改了。但是当我在联系部分并刷新页面时,它会选择主页但保持联系部分。

var lastId,
    topMenu = $(".menu"),
    topMenuHeight = topMenu.outerHeight()+15,   
    menuItems = topMenu.find("a"),   
    scrollItems = menuItems.map(function(){
        var item = $($(this).attr("href"));
        if (item.length) { return item; }
    });

    $(window).scroll(function(){        
        var fromTop = $(this).scrollTop()+topMenuHeight;        
        var cur = scrollItems.map(function(){
            if ($(this).offset().top < fromTop)
            return this;
        });         
        cur = cur[cur.length-1];
        var id = cur && cur.length ? cur[0].id : "";   
        if (lastId !== id) {
            lastId = id;            
            menuItems
                .parent().removeClass("active")
                .end().filter("[href=#"+id+"]").parent().addClass("active");
        }                   
    });

1 个答案:

答案 0 :(得分:0)

您可以尝试在刷新页面之前捕获会话变量上的菜单详细信息(当前菜单处于活动状态),并且在加载页面时参考同一会话变量和更新菜单中的菜单详细信息。

在卸载时捕获菜单详细信息的代码:

$('body').on('beforeunload',function(){
    //update menu details on session
    $.session.set("actMenu", $("#menu div.active").text());
});

更新加载菜单详细信息的代码:

$(document).ready(function(){
    //update menu from session
    $("#menu div").each(function() {
         if((this).text()==$.session.get('actMenu'))
             $(this).addClass('active');
    });
});

快乐编码:)