0

基本的に、ユーザーが div を開いたり閉じたりできるようにする jQuery スニペットがあります。ユーザーの設定は 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 に答える