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

时间:2009-11-18 19:17:34

标签: javascript jquery jquery-plugins

说我有以下jQuery插件:

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

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

$("body").myPlugin();

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

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

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

3 个答案:

答案 0 :(得分:49)

快速编写它的方式是:

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

编写它的正确方式是:

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

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

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

此代码创建一个匿名函数,并将其作为参数传递给jQuery。在函数内部,此参数绑定到$。之所以这样做,即使jQuery以no-conflict模式运行,它也允许您使用$

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

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

$.myPlugin();

答案 1 :(得分:2)

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

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

答案 2 :(得分:-1)

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

如果 在集合上工作,但有时空集合是有意义的,那么我认为你的调用者应该是$([]) - 将空Array传递给jQuery为您提供一个空集合;没有任何传递似乎会给你一个包含document的集合。