2

我正在尝试获取我正在使用的 jquery 插件的对象。我希望最终能够为插件添加功能以满足我的需求。我目前在调用我在插件中定义的函数时遇到问题。这是我拥有的代码框架:

;(function($) {
      $.fn.myPlugin = function(o) {
                    .//Implementations here
                    .
                    .
            var Ex =  function(e){
                    //implementations here
            };

      }; 

})(jQuery);

我想要这个函数的原因是因为我想访问一些定义的变量。我希望能够从我的 html 文件中调用函数 Ex,但是到目前为止我尝试的任何方法都没有奏效。我尝试过的一个例子是:

$.fn.myPlugin.Ex("x");

任何地方都没有退货声明。我不擅长 javascript 或 jquery,但我正在努力学习。感谢您解释我做错了什么的任何帮助。

4

1 回答 1

1

你的插件设计模式是错误的。

为了实现你想要的,你可以使用这个常见的:

;(function($){
  var methods = {
     init: function() {
       //stuff
     },
     function1: function() {
       //stuff
     },
     function2: function(opt) {
       //stuff
     }
  };
  $.fn.myPlugin= function(method) {
    if (methods[method]) {
      return methods[method].apply(this, Array.prototype.slice.call(arguments,1));
    } else if (typeof method === 'object' || ! method) {
      return methods.init.apply(this, arguments);
    } 
  };
})(jQuery);

使用这种结构:

$.fn.myPlugin();将会通知init()

$.fn.myPlugin("function1");将会通知function1()

$.fn.myPlugin("function2",option_exemple);将会通知function2(opt)

免责声明:我经常使用它,但它不是我的。不记得我在哪里找到的*。

  • 编辑:http ://docs.jquery.com/Plugins/Authoring ,感谢 Beetroot-Beetroot 的提醒!
于 2012-12-07T23:56:11.663 回答