2012-10-24 80 views
3

“官方”文档http://docs.jquery.com/Plugins/Authoring#Namespacing指出应该将方法添加到jQuery插件中,如下所示。我还没有看到这种经常实施的设计模式。好像其他插件使用var方法,可能会有冲突。这真的是首选的方法,还是应该以不同的方式做?将方法添加到jquery插件的最佳方法

(function($){ 

var methods = { 
    method1: function(options) {}, 
    method2: function() {} 
}; 

$.fn.tooltip = 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); 
    } 
}; 

})(jQuery); 
+0

我想,因为我没有收到任何其他答案或评论,prodigitalson的答案是完全一致... – user1032531

回答

0

如果你想使这些方法公开性地可行,那么是的,这是首选的方法。如果插件非常复杂,另一种选择是可能的,有时候是可取的,实际上是创建一个完整的构造对象,而不仅仅是使用方法散列。我不知道这真的需要做了,因为你可以管理每个实例的根元素使用状态.data(),但它的模式可见并且以前也赞赏。

<咆哮>此外,我曾与很多插件的后期加重......请,如果你要打开它的源确保你至少包括destroy方法来拆散你们所做的一切。 </rant >

+1

谢谢prodigitalson。我会承诺包括一种销毁方法! – user1032531

+0

w00t !!!!!!!!!!!!!!!!我真的不那么*兴奋,它该死的最小长度:-) – prodigitalson