我有一个带子菜单的菜单,当你点击子菜单打开的菜单名称时,现在我想要的是让浏览器记住哪个菜单是打开的,哪个菜单不是。
这是菜单中的一个
<div id="block">
<div class="flip1"><img src="/test/images/arrow_right.png"><div class="f1">Menu title</div></div>
<hr />
<div class="panel1">
<a href="">submenu title</a><br />
<a href="">submenu title</a>
</div></div>
到目前为止和我的jQuery代码
$(document).ready(function(){
//check if the menu should be open or not and open/hide it
var shouldShow = jQuery.cookie('show_desc') == 'yep';
if( shouldShow ) {jQuery('.panel1').show();}
else {jQuery('.panel1').hide();}
//toggle submenu on click and make a cookie to remember if it should open or hide the menu
$(".f1").click(function(){
$(".panel1").slideToggle("fast");
if( shouldShow ) {jQuery.cookie('show_desc', 'nope');}
else {jQuery.cookie('show_desc', 'yep'); }
});
});
我非常有信心这会起作用,但事实证明,当页面加载时它没有打开子菜单,并且它在点击时没有反应。我在这做错了什么?感谢任何帮助&gt; _&lt;
编辑: 好的,经过一些研究后我将slideToggle功能更改为: $(”。F1" )。单击(函数(){
$('.panel1').slideToggle('fast',function(){
if ($('.panel1').is(':hidden')) {
var state = "closed";
} else {
var state = "open";
}
});
jQuery.cookie('show_desc', state);
});
它起作用,但只是在开始时没有检查cookie。
var shouldShow = jQuery.cookie('show_desc') == 'open';
if( shouldShow ) {jQuery('.panel1').show();}
else {jQuery('.panel1').hide();}
我不明白为什么这行不起作用...如何检查cookie的值以便它可以工作D:
答案 0 :(得分:0)
您永远不会根据页面本身的状态设置shouldShow
的值 - 仅限于Cookie的状态。单击菜单时,您需要根据菜单的状态更新cookie,而不是shouldShow
的值(页面加载后永远不会更新)。