Javascript 编写jQuery插件的最佳方法-如果有这种方法?
有相当多的方法来编写插件,例如,我最近看到的是以下代码模式,Doug Neiner使用了它 那么,有人能告诉我使用上面的模式而不是下面的模式的好处吗。我看不出为jQuery堆栈中的每个元素调用$.extend函数有什么意义(见上文),下面的示例只执行一次,然后在堆栈上运行 为了测试它,我创建了两个插件,使用这两种模式,将样式应用于大约5000 li元素,下面的代码大约需要1秒,而上面的模式大约需要1.3秒Javascript 编写jQuery插件的最佳方法-如果有这种方法?,javascript,jquery,Javascript,Jquery,有相当多的方法来编写插件,例如,我最近看到的是以下代码模式,Doug Neiner使用了它 那么,有人能告诉我使用上面的模式而不是下面的模式的好处吗。我看不出为jQuery堆栈中的每个元素调用$.extend函数有什么意义(见上文),下面的示例只执行一次,然后在堆栈上运行 为了测试它,我创建了两个插件,使用这两种模式,将样式应用于大约5000 li元素,下面的代码大约需要1秒,而上面的模式大约需要1.3秒 (function($){ $.fn.formatLink = function(o
(function($){
$.fn.formatLink = function(options){
var options = $.extend({}, $.fn.formatLink.defaultOptions, options || {});
return this.each(function(){
//code here
});
});
$.fn.formatLink.defaultOptions ={}
})(jQuery);
我知道Doug在编写Slider时使用了这种格式,我认为这样做是为了公开内部函数,并在插件初始化后更容易调用它们。例如,在任意滑块中,您可以通过两种方式转到特定的滑块:
$('.anythingSlider')。anythingSlider(2)代码>用于外部链接。但是这个方法实际上使用下面的方法来执行操作
$('.anythingSlider').data('anythingSlider').gotoPage(2)代码>
也许有更简单/更好的方法,但我认为作者对这种方法有最好的解释/推理。所以@Doug Neiner(如果可行的话),给我们一个想法:)你看过jQueryUI的小部件工厂吗@彼得森——我快速浏览了一下这个链接,但并没有真正看到它与我所问的有什么关系?有什么我遗漏的吗?它讨论了widget开发。你能帮我一点忙吗?告诉我我应该看什么。也许他指的是这部分的文档:@Petersen&Fudgey-谢谢你们。我花了更多的时间阅读,但最终还是到达了目的地。谢谢你的帮助。你完全正确。我在他的网站上找到了这个关于自定义事件的示例,在阅读了他的代码后,我了解了他为什么使用他所使用的模式。这完全有道理。我想我的问题的答案是使用插件模式,它与我正在做的任务最相关。我还发现这非常有用
(function($){
$.fn.formatLink = function(options){
var options = $.extend({}, $.fn.formatLink.defaultOptions, options || {});
return this.each(function(){
//code here
});
});
$.fn.formatLink.defaultOptions ={}
})(jQuery);