【问题标题】:Setting cookies for a collapsable jQuery menu when using .toggle()使用 .toggle() 时为可折叠的 jQuery 菜单设置 cookie
【发布时间】:2012-08-29 22:44:39
【问题描述】:

我正在尝试在可折叠的垂直列表上设置 cookie,我正在使用 .toggle() 隐藏和显示列表以及 jQuery Cookie Plugin。我有像这样的非常简单的导航:

<ul class="menu-sidebar">
  <li>Item 1</li>
  <li><a href="#">Item 2</a>
    <ul>
      <li>Item 2.1</li>
    </ul>
  </li>
  <li><a href="#">Item 3</a>
    <ul>
      <li>Item 3.1</li>
    </ul>
 </li>
 <li>Item 4</li>
</ul>

使用以下 CSS:

.js .menu-sidebar li ul{display:none;}

然后我像这样切换列表:

jQuery(document).ready(function(){
  $('.menu-sidebar li:has(ul) a').click(function(){
    $(this).next().toggle();
  });
});

它很简单而且效果很好,但我真的不知道如何在上面设置 cookie。我一直在尝试这样做:

$('.menu-sidebar li:has(ul) a').click(function(){
  $(this).next().toggle();

  if ($(this).next().is(':visible')){
    $.cookie('verticalNav', 'expanded');
  }

  if ($(this).next().is(':hidden')){
    $.cookie('verticalNav', 'collapsed');
  }

  var verticalNav = $.cookie('verticalNav');
  if (verticalNav == 'expanded'){
    $(this).next().show();
  }
});

没有运气。有小费吗?谢谢! :)

【问题讨论】:

  • 惊人的脚本!如何将它与子子项一起使用?示例:1
    1.1
    1.1.1
    1.2

标签: jquery cookies toggle


【解决方案1】:

从 click() 方法中取出最后一个块。里面是多余的。 (当然,将其全部包装在 $(document).ready(function() {...}); 块中。)

更新:此代码将通过为每个子菜单分配不同的 cookie 值来处理多个子菜单。 http://jsfiddle.net/GDudf/13/

$('.menu-sidebar li:has(ul) a').click(function() {
    $(this).next().toggle();
    if ($(this).next().is(':visible')) {
        $.cookie($(this).text(), 'expanded');
    }

    if ($(this).next().is(':hidden')) {
        $.cookie($(this).text(), 'collapsed');
    }
});

$('.menu-sidebar > li').each(function() {
    var verticalNav = $.cookie( $(this).children('a').text() );
    if (verticalNav == 'expanded') {
        $(this).find('ul').show();
    }
});

【讨论】:

  • 但我在其中使用了this。它不能在函数之外,或者它可以......我做了这个jsfiddle.net/GDudf/8的jsfiddle
  • 感谢您的回复!但这似乎不起作用。更新了小提琴jsfiddle.net/GDudf/9
  • @any_h:这不是您在原始问题中发布的 HTML。使用一个 cookie 存储多个子菜单的状态是完全不同的问题。
  • @any_h:更新了您的新详细信息。下一次,请在您原来的问题更彻底。
  • 很抱歉。以后我会尽量说得更具体一些。
猜你喜欢
  • 2012-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-27
  • 1970-01-01
  • 2012-03-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多