我如何编写一个名为`$ .myplugin.func()`的jQuery插件?

时间:2012-10-12 04:32:52

标签: javascript jquery jquery-plugins

我写了一个简单的jQuery插件,但我想让它更高级,所以我可以做以下事情:

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

如何编写可以像这样调用的插件?

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

感谢@Craig MacGregor,感谢它。

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

$(this).myplugin.load();

2 个答案:

答案 0 :(得分:3)

您可以将对象分配给“myplugin”,如下所示:

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

  prev: function(){
      //code
  }
};

答案 1 :(得分: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');