1

これがプラグインの初期化であるとしましょう:

        $(document).ready(function() {
            $("#tree").fname({
                animSpeed: 0
            });
        });

ここで、別のメソッドを呼び出しても、そのanimSpeed値を保持したいと思います。

$('#tree').fname('expand');

ただし、現在のコードでは、animSpeed値が失われ、代わりにデフォルトの値がexpandメソッド呼び出しで使用されます(initで機能します)。どうすればこれを変更できますか?

現在のコード:

;(function($){

    $.fn.fname = function(method) {

        var defaults = {
            animSpeed           : 'fast'
        };
        var option = {};

        var methods = {

            init: function(options) {

                option = $.extend(defaults, options);

                return this.each(function() {
                    code...
                });
            },

            expand: function() {
                return this.each(function() {
                    $(this).children('li').slideDown(option.animSpeed);
                });
            }
        };
    };
}(jQuery));
4

1 に答える 1

4

data呼び出されている要素の元のオプションを保存する必要があります。

return this.each(function() {
    $(this).data('fname-options', options);
    // Code...
});

後で他の方法からアクセスできるように:

expand: function() {
    return this.each(function() {
        var $this = $(this),
            options = $this.data('fname-options');

        $this.children('li').slideDown(options.animSpeed);
    });
}
于 2012-07-20T03:20:12.110 に答える