我正在开发一个 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 插件的正确方法吗?有人可以建议更方便灵活的方式吗?
谢谢。