1

如何在 jQuery 中扩展现有的对象方法?

例如,我正在使用jqBarGraph。现在我想给addGrid()它添加一个函数。我在想我会这样做:

(function($) {
  $.fn.jqBarGraph.addGrid = function(){
    var o = this;
    // do something with 'o'
    return o;
  }
})(jQuery);

...但是当我打电话时$('#chart').jqBarGraph(options).addGrid();——我得到了错误:

Uncaught TypeError: Cannot call method 'addGrid' of undefined

4

1 回答 1

6

您正在向函数添加一个属性,因此您实际上只能访问它,例如

$('#chart').jqBarGraph.addGrid();

这不是你想要的。调用时似乎jqBarGraph没有返回任何内容。您必须像这样自己修补函数:

(function(old) {
  $.fn.jqBarGraph = function() {
    old.apply(this, arguments);  // call the actual function

    // return something
    return {
      addGraph: function() { ... }
    };
  };

  $.fn.jqBarGraph.defaults = old.defaults;  // restore properties
})($.fn.jqBarGraph);
于 2012-09-27T20:46:09.333 回答