0

我正在开发一个 jQuery 插件,并且已经遇到了有趣的问题。这是我的代码示例:

(function($){

    var settings = {
        'speed': 500
    };

    var methods = {
        init: function(options){
            settings = $.extend(options);
            return this.each(function(){
                $(this).bind('click.hideParagraph',  methods.manage );
            });
        },
        manage: function(){
            if ($(this).hasClass("hidden")){
                methods.show(this);
            } else {
                methods.hide(this);
            }
        },
        show: function(item){
            $(item).fadeIn(settings.speed, function(){});
        },
        hide: function(item){
            $(item).fadeOut(settings.speed, function(){});
        },
        destroy: function(){
            return this.each(function(){
                $(this).unbind('click.hideParagraph');
            });
        }
    };

    $.fn.hideParagraph = function( method ) {
        if ( methods[method] ) {
            return methods[method].apply( this, Array.prototype.slice.call( arguments, 1 ));
        } else if ( typeof method === 'object' || ! method ) {
            return methods.init.apply( this, arguments );
        } else {
            $.error( 'Method ' +  method + ' does not exist on jQuery.hideParagraph' );
        }   
    };
})(jQuery);

主要问题是函数fadeIn() 和fadeOut() 不能以这种方式工作(错误:f.speed 不是'jquery.min.js' 中的函数)。有人知道为什么会这样吗?

还有一个问题:这是实现 jQuery 插件的正确方法吗?有人可以建议更方便灵活的方式吗?

谢谢。

4

0 回答 0