5

我编写了一个简单的 jQuery 插件,但我想让它更高级,这样我就可以执行以下操作:

$.myplugin.close();
$.myplugin.open();
$.myplugin.next();
$.myplugin.prev();

我怎样才能编写一个可以这样调用的插件?

- - - - - - - - - - - - -更新 - - - - - - - - - - - - -

谢谢@Craig MacGregor,谢谢。

但是要调用该函数,它需要如下所示

$(this).myplugin.load();
4

2 回答 2

3

您可以像这样将对象分配给“myplugin”:

$.myplugin = {
  close: function(){ 
      //code
  },
  open: function(){
      //code
  },
  next: function(){
      //code
  },

  prev: function(){
      //code
  }
};
于 2012-10-12T04:50:49.043 回答
2

只是一个例子:

(funciton($) {
  var methods = {
    init: function() {},
    close: function() {},
    open: function() {},
    prev: function() {},
    next: function() {},
  };

  $.fn.myplugin = function (method) {
    if (methods[method]) {
      return methods[method].apply(this, [].slice.call(arguments, 1));
    } else if (typeof method == 'object' || !method) {
      return methods.init.apply(this, arguments);
    } else {
      $.error( 'Method ' +  method + ' does not exist on myplugin' );
    }      
  };

}(jQuery));

//usage
$(selector).myplugin();

// call methods
$(selector).myplugin('close');
$(selector).myplugin('open');
$(selector).myplugin('next');
$(selector).myplugin('prev');
于 2012-10-12T06:39:31.763 回答