2010-04-25 115 views
0

我有30个div在同一页上具有相同的类。当我按标题(.pull)时,内容向上滑动(.toggle_container)。当内容被隐藏并且我再次按下标题时,内容就会滑落。此外,我想存储一个cookie内的div状态。 我修改了我的原始代码,将div状态存储在cookie中,但它不适用于所有div(pull1,toggle_container1,pull2,toggle_container2 [...]),它仅适用于第一个(pull0,toggle_container0)。 我做错了什么?增量变量为

var increment = 0; 
      if ($.cookie('showTop') == 'collapsed') { 
       $(".toggle_container" + increment).hide(); 
      }else { 
       $(".toggle_container" + increment).show(); 
     }; 
      $("a.pull" + increment).click(function() { 
      if ($(".toggle_container" + increment).is(":hidden")) { 
       $(".toggle_container" + increment).slideDown("slow"); 
       $.cookie('showTop', 'expanded'); 
       increment++; 
      } else { 
       $(".toggle_container" + increment).slideUp("slow"); 
       $.cookie('showTop', 'collapsed'); 
       increment++; 
      } 
      return false; 

      });  

回答

1

这是代码:

$('div.toggle_container').each(function() { // Initialise 
     var index = this.id.replace(/^\D+/, ''); 
       $(this).toggle($.cookie('showTop' + index) == 'collapsed'); 
      }); 

    $('a.pull').click(function() { //Activate     
     var index = this.id.replace(/^\D+/, ''); 
     if ($.cookie('showTop' + index) == 'collapsed') { 
     var container = $('#toggle_container' + index).slideDown('slow'); 
     $.cookie('showTop' + index, container.is(':hidden') ? 'collapsed' : 'expanded'); 
     }else { 
     var container = $('#toggle_container' + index).slideUp('slow'); 
     $.cookie('showTop' + index, container.is(':visible') ? 'expanded' : 'collapsed'); 
      } 
}); 
1

我还没有尝试过任何代码的, 但不会$( “a.pull” +增量)= $( “a.pull0”)? 和我没有看到任何循环,所以增量0选择器是唯一一个将被执行?

jQuery选择看可能是 http://api.jquery.com/attribute-starts-with-selector/ 如果你可以选择具有与.pull(或其他)开始一类的div,而不必绑定到30周不同的div话,我想你的代码会更高性能。

+0

它不工作,因为我试图使用从终端数量的div分开。如果我使用选择器并按下a.pull0,所有div都会滑动。我试图一次切换一个div,而不是所有的div。 – 2010-04-25 09:23:29