调用jQuery插件而不指定任何元素

说我有以下jQuery插件:

$.fn.myPlugin = function () { //plugin code } 

通常,您在一定数量的元素上调用插件,如:

 $("body").myPlugin(); 

有没有办法在不指定元素的情况下调用我的插件?

我试过这样称呼: $.myPlugin(); ,但这不起作用。

有效的是: $().myPlugin(); ,但这是调用它的正确方法吗?

编写它的快速方法是:

 $.myPlugin = function () { // Plugin code } 

写它的正确方法是这样的:

 (function ($) { $.extend({ myPlugin: function () { // plugin code } }); })(jQuery); 

起初看起来有点令人困惑,但它是一种常见的jQuery模式。

 (function($){ // Code })(jQuery); 

此代码创建一个匿名函数并调用它将jQuery作为参数传递。 在函数内部,这个参数绑定到$ 。 这样做的原因是,即使jQuery在无冲突模式下运行,它也允许你使用$

第二部分是$.extend 。 当使用单个参数调用时,它基本上扩展了jQuery对象本身。

调用插件(在快速和正确的情况下)是:

 $.myPlugin(); 

我想你正在寻找jQuery.extend():

 jQuery.extend({ func: function() { alert('test'); } }); $.func(); 

如果你写了不同的东西,比如$('a').myPlugin() ,它会使用该集合吗? 如果没有,那你为什么要把它放在$.fn ? 也许你想把它注入jQuery本身。

如果它对集合起作用,但有时空集合是有意义的,那么我认为你的调用应该是$([]) – 将一个空Array传递给jQuery会给你一个空集合; 什么都没有传递似乎给你一个包含document的集合。