假设我有一个像$ .abc = function(){}这样的jQuery插件。现在我想提供一个额外的模块,它使用与$ .abc相同的范围并扩展其功能。对于例如在我的abc插件中,我将检查是否说变量mod1 = true;如果是真的,那么我会自动调用mod1的thoso函数。
我的问题是如何编写mod1以便它可以与我的基本插件共享相同的命名空间,并且我可以从我的插件中调用它,例如mod1.getFiles();
谢谢你的时间。对不起,如果这不是很清楚。如果您有任何问题,我会再次解释。
更新:如何调用插件栏的功能测试?
$.fn.pluginFoo = function() {
...
CALL FUNCTION TEST OF PLUGINBAR
...
};
$.fn.pluginBar = function() {
...
function test() {
alert('this is a test');
}
...
};
答案 0 :(得分:2)
无需创建共享数据对象。您可以使用简单的return语句将一个插件的某些功能公开给其他插件。
$.fn.pluginFoo = function () {
// here you can access public "members" of pluginBar
$.fn.pluginBar.fn3();
$.fn.pluginBar.fn4();
}
$.fn.pluginBar = function () {
// private "members" (only this plugin can access them)
var fn1 = function () { ... }
var fn2 = function () { ... }
// public "members" (other plugin can access that as well)
// fn3 is defined in the return, fn4 allows to access private function fn1
return {
fn3: function () { ... },
fn4: fn1
};
}
答案 1 :(得分:0)
您希望两个插件访问共享的数据/函数集,您可以这样做:
var myPluginData = {
flag: true,
alertNothing: function() {
alert('I do Nothing');
}
};
$.fn.pluginFoo = function() {
...
myPluginData.flag = false;
myPluginData.alertNothing();
...
};
$.fn.pluginBar = function() {
...
myPluginData.alertNothing();
myPluginData.flag = true;
...
};
你实际上并不需要为它定义一个对象,但它确实使事情更加清晰。