如何使用相同的命名空间扩展jquery插件

时间:2017-11-07 10:22:03

标签: javascript jquery

我创建了两个通用的jquery插件文件。 ' script1.js'和' script2.js'

某些项目需要' script1.js' &安培;其他需要' script2.js'。 我的新项目需要这两个插件。

我如何使用具有相同命名空间的这些插件。

我的命名空间是' abc '

script1.js
----------
(function($)
{
    $.fn.abc = function ()
    {
        return
        {
            foo1: function()
            {
                console.log("foo1");
            },

            foo2: function()
            {
                console.log("foo2");
            }
        }
    };
})(jQuery);
  

$(" .element&#34)。ABC()foo1(); //工作正常 - ' foo1'

script2.js
----------
(function($)
{
    $.fn.abc = function ()
    {
        return
        {
            foo3: function()
            {
                console.log("foo3");
            }
        }
    };
})(jQuery);

我可以使用第二个插件扩展第一个插件。

  

$(" .element&#34)。ABC()foo3(); //预期打印' foo3'

     

$(" .element&#34)。ABC()foo1(); //预期打印' foo1'

foo1&几乎每个应用程序都需要foo2。但每个应用程序都不需要foo3。 foo3是一个更大的插件。

1 个答案:

答案 0 :(得分:0)

参考这个答案。 Best Way to Extend a jQuery Plugin

更新:如果您可以编辑现有的script1.js插件

(function($) {
    $.fn.abc = function() {
        return {
            foo1: function() {
                console.log("foo1");
            },

            foo2: function() {
                console.log("foo2");
            },

            foo3: function() {
                console.log("foo3");
            }
        }
    };
})(jQuery);

这样做。

如果要使用.abc()

的函数扩展.xyz()命名空间的函数
$.fn.abc = function () {
     // here you can access public "members" of plugin xyz
     $.fn.pluginBar.foo3();
}


$.fn.xyz = function () {
    // private "members" (only this plugin can access them)
    var fn1 = function () { ... }
    var fn2 = function () { ... }

    return {
        foo3: function () { console.log("foo3") },
    };
}