坚如磐石的jQuery插件模板?

时间:2012-01-17 08:59:47

标签: javascript jquery templates plugins

几分钟前我被CodeCanyon拒绝了,我有点失望,因为我使用了CSS-Tricks的这个模板:

http://css-tricks.com/snippets/jquery/jquery-plugin-template/

我不是JS忍者,我认为这是一个可靠的模板,但这里有一些问题:

  • 它使用两个名称空间
  • 不遵循传统模式。例: var zoomWizard = function(el, options) {
 var base = this;
 base.$el = $(el); base.el = el; };

作为上述片段的“正确”方法,我获得了“this.el = el”等,这打破了base.el的整个目的! 'base'的概念是从其他函数引用'this'对象而没有范围问题。至少据我所知。

但等等,还有更多: - 在构造函数中定义方法是不好的做法;它浪费CPU和内存资源。例如:

base.functionName = function() {
    ....
}
  • 应在$ .fn.zoomWizard上定义默认选项,而不是$ .zoomWizard

我尝试使用谷歌搜索一个坚实的jquery插件模板,该模板不建议使用上述做法,但在css-tricks中找不到任何“高调”。有什么建议?

感谢您的时间!

1 个答案:

答案 0 :(得分:0)

我不确定这是否能回答你的问题(我希望如此)。我使用这个模板来创建jquery插件:

(function($){
$.fn.extend(
{
    //plugin name here
    functionName: function(options) 
    {

        //Settings list and the default values
        var defaults = 
        {
           defaultvar1: "value",
           defaultvar2: "value"
        };

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

        return this.each(function() 
        {
            var o =options;
            var obj = $(this);             
            //do stuff here
            }
    });
})(jQuery);

如果有两个不同的功能,AFAIK两个名称空间就可以了。如果不是那么你就是“污染”命名空间列表,并且应该将修饰符添加为参数aka .zoom("in", 300);.zoom("out", 300);而不是.zoomIn(300).zoomOut(300)