我有一个工作的垂直手风琴菜单,可以创建一个活动的课程,并在整个网站中从一个页面移动到另一个页面时保存。我遇到的问题是,当我从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');
});
非常感谢任何帮助。
干杯
答案 0 :(得分:0)
让我们关注3个解决方案:
对我来说最糟糕的解决方案。它有很多有争议的情况:
通过比较网址检测活动菜单条目(window.location == a [href])。
更好,但是......
在每个视图中定义活动菜单项。
最好的解决方案,但如果以错误的方式完成也会很痛苦。
回到你的问题 - 你可以结合最后两种方法。只需获取页面URL(窗口位置解决方案的一部分)并创建类似"网站地图" (最后一个解决方案的一部分,但是你在一个js文件中定义它):
{
'url_1': 'active_menu_item',
'url_2': 'another_active_menu_item',
'maybe_some_[regexp]+`: '???',
...
}
或在视图顶部定义这些变量(checkCookie
和e.q。checkCookieSub
)。
那饼干在哪里?抱歉,我无法找到改进此Cookie方法的方法(我们可以通过多种方式浏览网站,它们无用且最痛苦):)