从谷歌点击时,使子页面处于活动状态

时间:2014-09-25 20:43:21

标签: jquery css cookies

我有一个工作的垂直手风琴菜单,可以创建一个活动的课程,并在整个网站中从一个页面移动到另一个页面时保存。我遇到的问题是,当我从google转到子页面时,手风琴菜单不会下拉并显示活动类。

我在页面之间使用cookie来保存课程。我是否会使用类似的技术来捕获从谷歌搜索时所处的页面?

http://jsfiddle.net/tebrown/uzrbbqx9/4/

    $('#cssmenu > li:has(ul)').addClass("has-sub");

    var checkCookie = $.cookie("nav-item");
    if (checkCookie != "") {
        $('#cssmenu > li > a:eq(' + checkCookie + ')').addClass('active').next().show();
    }
    checkCookie = $.cookie("sub_nav-item");
    if (checkCookie != "") {
        $('#cssmenu > li > ul > li > a:eq(' + checkCookie + ')').addClass('active').next().show();
    }


    $('#cssmenu > li > ul > li > a').click(function () {
        var navIndex = $('#cssmenu > li > ul > li > a').index(this);
        $.cookie("sub_nav-item", navIndex);
        var checkElement = $(this).next();


        $(this).removeClass('testing');
        $(this).closest('li').addClass('testing');
        $('#cssmenu li li .active').removeClass('active');
        $(this).addClass('active');
    });

    $('#cssmenu > li > a').click(function () {
        var $a = $(this),
            $ul = $a.next(),
            navIndex = $('#cssmenu > li > a').index(this);

        $.cookie("nav-item", navIndex);
        $('#cssmenu li a.active').not(this).removeClass('active').next().stop().slideUp();

        if ($ul.is(':animated'))
            return;

        $ul.stop().slideToggle();
        $a.toggleClass('active');

        });

非常感谢任何帮助。

干杯

1 个答案:

答案 0 :(得分:0)

让我们关注3个解决方案:

曲奇

对我来说最糟糕的解决方案。它有很多有争议的情况:

  • 假设我们在页面A上,然后我们使用菜单转到页面B(仍然可以正常工作)。当我们使用其他链接(外部菜单)返回页面A时会怎样?
  • 我们从谷歌访问该页面或只是更改浏览器中的网址 - 我们如何检测活动页面?

窗口位置

通过比较网址检测活动菜单条目(window.location == a [href])。

更好,但是......

  • 我们可以拥有与菜单链接href不同的网页,但它仍然是此部分的子页面。再次 - 如何检测它?

硬编码

在每个视图中定义活动菜单项。

最好的解决方案,但如果以错误的方式完成也会很痛苦。


答案

回到你的问题 - 你可以结合最后两种方法。只需获取页面URL(窗口位置解决方案的一部分)并创建类似"网站地图" (最后一个解决方案的一部分,但是你在一个js文件中定义它):

{
    'url_1': 'active_menu_item',
    'url_2': 'another_active_menu_item',
    'maybe_some_[regexp]+`: '???',
    ...
}

或在视图顶部定义这些变量(checkCookie和e.q。checkCookieSub)。

那饼干在哪里?抱歉,我无法找到改进此Cookie方法的方法(我们可以通过多种方式浏览网站,它们无用且最痛苦):)