2010-05-20 3 views
0

J'ai un extrait jQuery qui permet essentiellement à un utilisateur de basculer un div, ouvert ou fermé - leur préférence est enregistrée dans un cookie.jQuery Réduire (avec cookies), par défaut ouvert au lieu de fermé?

(function($) { 
$.fn.extend({ 
    collapse: function(options) { 

     var defaults = { 
      inactive : "inactive", 
      active : "active", 
      head : ".trigger", 
      group : ".wrap-me-up", 
      speed : 300, 
      cookie : "collapse" 
     }; 

     // Set a cookie counter so we dont get name collisions 
     var op = $.extend(defaults, options); 
      cookie_counter = 0; 

     return this.each(function() { 

      // Increment cookie name counter 
      cookie_counter++; 

      var obj = $(this), 
       sections = obj.find(op.head).addClass(op.inactive), 
       panel = obj.find(op.group).hide(), 
       l = sections.length, 
       cookie = op.cookie + "_" + cookie_counter; 

      // Look for existing cookies 
      for (c=0;c<=l;c++) { 
       var cvalue = $.cookie(cookie + c); 
       if (cvalue == 'open' + c) { 
        panel.eq(c).show(); 
        panel.eq(c).prev().removeClass(op.inactive).addClass(op.active); 
       }; 
      }; 
      sections.click(function(e) { 
       e.preventDefault(); 
       var num = sections.index(this); 
       var cookieName = cookie + num; 
       var ul = $(this).next(op.group); 
       // If item is open, slide up 
       if($(this).hasClass(op.active)) { 
        ul.slideUp(op.speed); 
        $(this).removeClass(op.active).addClass(op.inactive); 
        $.cookie(cookieName, null, { path: '/', expires: 10 }); 
        return 
       } 
       // Else slide down 
       ul.slideDown(op.speed); 
       $(this).addClass(op.active).removeClass(op.inactive); 
       var cookieValue = 'open' + num; 
       $.cookie(cookieName, cookieValue, { path: '/', expires: 10 }); 
      }); 
     }); 
    } 
}); 

}) (jQuery);

Démo: http://christianbullock.com/demo/

Je me demande comment je peux afficher la liste ouverte par défaut, et ont l'effondrement div lorsque l'en-tête est cliqué?

Merci beaucoup.

Christian.

Répondre

0

Je pense que cela devrait fonctionner si vous changez simplement autour du spectacle() et cacher() fonction

ligne 25:

panel = obj.find(op.group).hide(), 

à

panel = obj.find(op.group).show(), 

ligne 33

panel.eq(c).show(); 

à

panel.eq(c).hide(); 

alors je pense que vous utilisez le code à nouveau trop compliqué si vous voulez masquer/afficher seulement 1 élément