我正在编写一个 jQuery 插件,以允许以指定的形式初始化多个单个文件上传字段(使用 Fine Uploader )。
最终,我希望表单知道它附加了这些单个 uploader ,这样我就可以在手动启动文件上传和提交表单之前运行一些验证等。
我理想的初始化代码如下所示:
var form = $("form");
form.uploader();
form.addUploader({
element: '.uploader_one'
});
form.addUploader({
element: '.uploader_two'
});
到目前为止,我为实现这一目标而编写的插件如下所示:
(function($) {
var Uploader = function(form){
addUploader = function() {
// Initialize Fine Uploader
}
$(form).submit(function(e) {
// Run validations, then process uploaders
$(this).submit();
}
}
$.fn.uploader = function(options) {
var uploader = new Uploader(this);
};
})(jQuery);
除了 addUploader 函数不可公开访问之外,大部分功能都是有效的。
我可能以错误的方式处理这个问题吗?任何帮助将不胜感激!
最佳答案
您需要使 addUploader
成为对象的成员,以使其可以通过对象进行访问(而不是作为与对象断开连接的全局变量):
this.addUploader = function() {
插件必须对对象执行一些操作,以便可以访问它,例如返回它:
$.fn.uploader = function(options) {
return new Uploader(this);
};
现在您可以从插件获取对象并使用它:
var form = $("form");
var upl = form.uploader();
upl.addUploader({
element: '.uploader_one'
});
upl.addUploader({
element: '.uploader_two'
});
关于Javascript 命名空间和公共(public)函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16179536/