(function($){
$.fn.the_func = function() {
function my_func(){
alert('it works');
}
my_func();
// other code
};
})(jQuery);
$(window).load(function(){
my_func(); // This way?
$.the_func().my_func(); // Or this way? No?
$.the_func.my_func(); // No?
// ?
});
$(document).ready(function(){
$('div').the_func();
});
如何在包装它的功能之外调用此功能?
我想在此代码示例中调用my_func()
(窗口加载功能只是一个例子。)
我想从“无处不在”调用my_func()
而不执行the_func()
中的其他函数或代码。但我想使用the_func()
的变量
使用my_func()
我想更新存储在the_func()
。
答案 0 :(得分:2)
以下是我通常编写插件的示例,可以应用于您的情况:
(function ($) {
function my_func(element) {
console.log("it works: " + element.innerHTML);
}
var methods = {
init: function (options) {
console.log("from init");
console.log("options for init: " + JSON.stringify(options));
my_func(this);
},
my_func: function (options) {
console.log("from my_func");
console.log("options for my_func: " + JSON.stringify(options));
my_func(this);
}
};
$.fn.the_func = function (method) {
var args = arguments;
var argss = Array.prototype.slice.call(args, 1);
return this.each(function () {
if (methods[method]) {
methods[method].apply(this, argss);
}
else if (typeof method === "object" || !method) {
methods.init.apply(this, args);
}
else {
$.error("Method " + method + " does not exist on jQuery.the_func");
}
});
};
})(jQuery);
$(document).ready(function () {
$("div").the_func({ // Same as passing "init" and { } as params
test: "testing"
});
});
注意我是如何在可以调用的作用域内创建泛型my_func
函数的。 my_func
中的methods
方法是通过插件语法.the_func()
向全世界展示的内容,my_func
函数是私有的,无法直接访问。
调用不同方法的语法与大多数/大量jQuery插件相同。