Javascript 创建基于参数的jquery插件

Javascript 创建基于参数的jquery插件,javascript,jquery,plugins,Javascript,Jquery,Plugins,我有一个很长的jquery函数,我想把它作为一个插件分开。 通常,大多数jquery插件都有一个选择器元素,如下所示 ;( function( $, window, document, undefined ) { 'use strict'; $.fn.myPlugin = function( options ) { // codes goes here } })( jQuery, window, document ); 用法是这

我有一个很长的jquery函数,我想把它作为一个插件分开。 通常,大多数jquery插件都有一个选择器元素,如下所示

  ;( function( $, window, document, undefined )
    {
    'use strict';
    $.fn.myPlugin = function( options )
    {
       // codes goes here
    }
    })( jQuery, window, document );
用法是这样的

 $('.element').myPlugin();

但在我的例子中,javascript函数实际上并不需要选择器元素,它只需要一个值(参数)

那么,我如何使用它作为插件呢

我希望用法是这样的

myPlugin.coolMethods(Str) // and this should return a value.

没问题!在这种情况下,您可以创建插件,并在每个元素上使用它,而与它没有任何关系! 通常,函数不必使用JQuery元素

例如:

$.fn.NewFunc /*Your plugin function*/ = function(param1){
    console.log("Oh! It's ok!!");
    console.log(arguments);
};
用法:

$.fn.NewFunc("Hello!");
$.myPlugin({
    name: 'Suzy'
});

甚至:

$("AnySelector").NewFunc("param1", "param2");

如果您不需要通过
选择器
选择元素,您可以使用其他类似方式(这不是插件):

并使用类似的方法:

$.NewFunc("param1", "param2");

如果您不需要任何jquery功能(选择器)$。部分),并且希望像这样调用它

myPlugin.CoolMethod("abc")
然后你需要一个
名称空间
,而不是一个插件

有许多方法可以生成名称空间和脚本来帮助实现这一点,但名称空间本质上是一个包含函数的对象,基本设置是:

var myPlugin={};
myPlugin.CoolMethod=函数(参数1){
返回param1+param1;
};
//要使用此选项,请执行以下操作:
console.log(myPlugin.CoolMethod(“abc”))
这是我的版本

(function ($, window, document, undefined) {
    'use strict';

    var PLUGIN_NAME = 'myPlugin';

    function plugin(options) {    
         var opts = $.extend(true, {}, $[PLUGIN_NAME].defaults, options);
        _print(opts.name);
    }

    var _print = function (name) {
        console.log(name);
    };       

    $[PLUGIN_NAME] = function (options) {
        new plugin(options);
    };

    $[PLUGIN_NAME].defaults = {        
        name: 'John'        
    };
}(jQuery, window, document));
用法:

$.fn.NewFunc("Hello!");
$.myPlugin({
    name: 'Suzy'
});


欢迎光临。这种方式的优点和我对你的问题的看法是一样的。我认为您有一个很大的项目,其中有不同的作用域,您希望访问所有这些项目中的插件函数,这就是为什么您不希望使用变量(类似于将函数分配给window对象:
window.MyPlugins={plugin1:function(param){…}
,但您的目标是使用JQuery而不是window。)。
$.myPlugin({
    name: 'Suzy'
});
$.myPlugin();