首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >编写jQuery插件的最好方法是什么--如果有这样的方法?

编写jQuery插件的最好方法是什么--如果有这样的方法?
EN

Stack Overflow用户
提问于 2010-06-02 19:45:19
回答 1查看 473关注 0票数 4

有相当多的方法来编写插件,例如here's a nice example,我最近看到的是下面的代码模式,Doug Neiner here使用了它;

代码语言:javascript
运行
复制
(function($){
   $.formatLink = function(el, options){
    var base = this;
    base.$el = $(el);
    base.el = el;
    base.$el.data("formatLink", base);
    base.init = function(){
       base.options = $.extend({}, $.formatLink.defaultOptions, options); 
       //code here
    }                 
    base.init();
   };

   $.formatLink.defaultOptions = { };

   $.fn.formatLink = function(options){
      return this.each(function(){
       (new $.formatLink(this, options));
      });
   };
})(jQuery);

那么,谁能告诉我使用上面的模式而不是下面的模式的好处。我看不出为jQuery堆栈(上面)中的每个元素调用$.extend函数有什么意义,下面的示例只做了一次,然后在堆栈上工作。

为了测试它,我创建了两个插件,使用两种模式,将样式应用到大约5000个li元素,下面的代码花了大约1秒,而上面的模式花了大约1.3秒。

代码语言:javascript
运行
复制
(function($){
   $.fn.formatLink = function(options){
       var options = $.extend({}, $.fn.formatLink.defaultOptions, options || {});

       return this.each(function(){
        //code here
       });
    });

$.fn.formatLink.defaultOptions ={}
})(jQuery);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-06-02 22:28:13

我知道Doug在编写任何Slider时都使用这种格式,我认为这样做是为了公开内部函数,以便在初始化插件后更容易调用它们。例如,在Anything Slider中,您可以通过两种方式转到特定幻灯片:

  1. 使用专为外部链接设计的$('.anythingSlider').anythingSlider(2);。但是这个方法实际上使用了下面的方法来执行操作。$('.anythingSlider').data('AnythingSlider').gotoPage(2);

是另一种方法,它展示了如何通过数据访问子函数:

也许还有更简单/更好的方法,但我认为作者对这种方法有最好的解释/推理。所以@Doug Neiner (如果可行),给我们一个想法:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2957327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档