0

我有一个 jQuery 片段,它基本上允许用户切换 div,打开或关闭 - 他们的偏好保存在 cookie 中。

 (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);

演示:http ://christianbullock.com/demo/

我只是想知道如何将列表显示为默认打开,并在单击标题时让 div 折叠?

非常感谢。

基督教。

4

1 回答 1

0

我认为如果您只是交换 show() 和 hide() 函数,它应该可以工作

第 25 行:

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

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

第 33 行

 panel.eq(c).show();

 panel.eq(c).hide();

然后我认为如果你只想隐藏/显示 1 个元素,我认为你使用的代码太复杂了

于 2010-05-28T23:29:12.750 回答