使用泛型函数扩展jquery

时间:2011-03-10 18:26:05

标签: javascript jquery jquery-plugins

我正在使用jquery为我的网站编写一个通用函数,它将在整个站点上用于显示成功/错误消息。我决定把它作为一个插件。

下面给出了一个简单的插件形式:

; (function ($) {
        jQuery.FlashMessage=function(msg){
            alert(msg);
        }

})(jQuery);

我想知道在jquery命名空间中定义插件是一个好习惯,还是应该在$ .fn.XXXX下定义..或者我是否过度思考它根本不重要。

3 个答案:

答案 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