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 回答