如何在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
答案 0 :(得分: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);