为什么Toggle()设置cookie值,但slideToggle()没有

时间:2013-12-23 22:21:06

标签: jquery cookies jquery-cookie

这是我的JFiddle:

http://jsfiddle.net/TM4Yd/2/

在我的代码中,我使用$("ul#nav-Expanded").slideToggle();来切换<ul>#nav-Expanded的可见性。我期待在切换时,cookie的值将在true和false之间变化。但事实并非如此。如果我在没有幻灯片效果的情况下将行更改为$("ul#nav-Expanded").toggle();,则正确设置了Cookie。

如何分别设置每个切换的cookie值并具有幻灯片效果?它太突然了,只是显示或隐藏菜单而没有任何过渡。

在JSFiddle中,请忽略所有代码,直到您看到注释“// BEGIN MAIN JQUERY CODE”。这是我的代码开始的地方。

1 个答案:

答案 0 :(得分:1)

将其添加到slideToggle()的回调中:

$("ul#nav-Expanded").slideToggle(function() {
    var isVisible = $('ul#nav-Expanded').is(':visible').toString();
    $.cookie('nav-expanded', isVisible);
});

它不起作用,因为当菜单仍在滑出时.is(':visible')未设置,而$.cookie()则设置为初始状态isVisible