Javascript 命名空间和公共(public)函数

标签 javascript jquery jquery-plugins fine-uploader

我正在编写一个 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/

相关文章:

javascript - 如何结合 2 个同位素过滤器 javascript 函数?

javascript - Mottie 虚拟键盘和选择器

javascript - jquery和.js中根据屏幕尺寸显示不同的图像

javascript - 如何在不触发事件的情况下改变select2的值?

javascript - 回调访问数据

jQuery UI Datepicker 区域语言和最大值

javascript - 动画完成后如何在 JQuery 中执行某些操作()

javascript - 使用 promise /构造 promise 链时,如何设计/集成错误处理?

javascript - select2 本地存储的下拉值

javascript - 当我尝试使用这个插件时没有任何反应 (InlineDisqussions)