我正在使用jquery为我的网站编写一个通用函数,它将在整个站点上用于显示成功/错误消息。我决定把它作为一个插件。
下面给出了一个简单的插件形式:
; (function ($) {
jQuery.FlashMessage=function(msg){
alert(msg);
}
})(jQuery);
我想知道在jquery命名空间中定义插件是一个好习惯,还是应该在$ .fn.XXXX下定义..或者我是否过度思考它根本不重要。
答案 0 :(得分:4)
您可以将这些功能添加到jQuery.fn
,这些功能应该在选定的元素上运行,例如$('div').yourFunction()
。
如果你想要一个“通用”函数,比如$.ajax()
,那么你应该将它添加到jQuery对象中,就像你已经做的那样。但我会在函数中使用$
:
(function ($) {
$.FlashMessage=function(msg){
alert(msg);
}
})(jQuery);
所以这取决于你想要什么样的功能。
答案 1 :(得分:2)
jQuery.fn
相当于jQuery.prototype
使用jQuery.fn.FlashMessage
即可
jQuery.fn.FlashMessage=function(){
return this.each(function(){
//do some thing
});
});
//use like this, your chaining is secured
jQuery('#someElement').FlashMessage().DoSomeThingElse().SomethingMore();
如果您担心只修改一个元素而不是使用jQuery.FlashMessage
的原因,请执行myNameSpace.FlashMessage
答案 2 :(得分:0)
通常,fn namspace上的插件返回一个jQuery对象以保持可链接性。它们也应用于jQuery.prototype
,因此所有jQuery对象都可以调用它。
查看此页面以获得有关插件创作的非常好的概述:http://docs.jquery.com/Plugins/Authoring