使用这个jQuery插件(不是我的)良好的编码实践?

时间:2011-11-07 22:57:23

标签: jquery jquery-plugins

我希望这个问题不太具体。目前,我正在尝试为jQuery编写一个插件,但我正在努力构建它的各种方法。我找到了bxSlider,并认为插件代码非常容易使用。这是一个简单的例子:

(function($){

$.fn.letSlider = function(options){     

    var defaults = {
        speed: 500,                         
        onBeforeSlide: function(){} //Callback          
    }

    var options = $.extend(defaults, options);

    //cache base element
    base = this;

        //public functions
        this.init = function(){
            text = giveText();
            alert(text + ' ' + options.speed);

        };

        //private functions
        function giveText(){
                return 'blubb';
        };

    this.each(function(){
        // make sure the element has children
        if($(this).children().length > 0){
            base.init();
        }
    });

    return this;                        
}
 })(jQuery);

所以它有一个清晰的结构,我设法理解。但是,它看起来与我迄今为止所见的所有插件结构完全不同,所以我不确定,如果以后它不会给我带来麻烦。尽管如此,它基本上完成了我需要的一切:暴露选项,回调,私有和公共功能。有了它,它也应该是可链接的。我注意到的一件事是,基本上所有东西都在最初的$ .fn.bxSlider = function(options){...我以前从未见过。

就其他插件结构而言,它们要么太复杂,我无法掌握(对我感到羞耻),要么我没有实现它们。例如,对于http://www.learningjquery.com/2007/10/a-plugin-development-pattern,我无法在私有或公共函数中使opts(选项变量)可用。但我离题了。 ...

2 个答案:

答案 0 :(得分:1)

如果您想知道自己是否遵循最佳做法,我会从创作插​​件的jQuery's own documentation开始。他们提供了很容易理解的例子。

答案 1 :(得分:0)

我认为你只需要使用最适合你试图制作的插件的技巧。您给出的示例看起来就像一个好的模板。

如果您在访问opts时遇到问题,那是因为它是$ .fn.hilight函数中的私有变量。因此,在相同范围之外定义的方法自然无法访问它。

在此处的示例中,options也是一个私有变量,但下面定义的方法属于同一范围,因此它们被授予访问权限。

示例1:

foo = function () {
  var secret = "foo";
}

foo.bar = function() {
  alert(secret); // NOT OK!
}

示例2:

foo = function() {
  var secret = "foo";

  this.bar = function() {
    alert(secret); // OK!
  }
}