2012-09-27 63 views
1

如何在jQuery中擴展現有的對象方法?如何在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

確保您在調用插件和您的楷書前 – SpYk3HH

回答

6

您要添加的屬性到函數,所以你可以真正只能訪問它,例如

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

這不是你想要的。看來jqBarGraph在被調用時不會返回任何內容。你必須給自己打補丁的功能是這樣的:

​​
+0

感謝後添加它,我會在GitHub上跳,以及向開發人員報告他應該用他的功能回報一個「這個」。 – Volomike

+0

@Volomike:是的,這似乎是合理的。儘管如此,它不會改變解決方案。 – pimvdb

+0

我實現了這個代碼 - 工作真棒!唯一需要注意的是addGraph()函數內的「this」是一個不同的「this」。相反,需要在'old.apply()'語句之前執行'var oThis = this;',然後在addGraph()函數內引用oThis。 – Volomike

相關問題