2013-11-02 80 views
0

我想覆蓋在jstree庫 http://static.jstree.com/v.1.0pre/jquery.jstree.js重寫當DOM準備

我有我要實現自己的add_cssadd_sheet功能的版本,另一個js文件$.vakata.css.add_css and $.vakata.css.add_sheet函數運行JavaScript函數。我不想碰第三方jstree庫。

問題是我不能重寫這些函數,因爲jstree在DOM準備好時執行這些函數。

有沒有一種方法可以阻止jstree執行其$.vakata.css.add_css$.vakata.css.add_sheet並使用改變jstree代碼的函數。

+0

你就不能說'$ .vakata.css.add_css =你的功能? (在包含jstree.js之後但在DOM準備好之前運行的腳本塊中) – nnnnnn

+0

查找「monkey patching」並關閉;) – dmp

回答

0

嘗試DOM之前執行加載

$.vakata.css.add_css = function() { 
    // your code 
    // ...or call your function 
}; 

這將替換vakata方法,但保留執行的DOM加載後

+0

我試過但我得到「無法獲取屬性的值'css 「」。如果我可以綁定到jstree中的某個東西,告訴我jstree文件已經加載,那將是一件好事。在這一點上,我可以覆蓋add_css。此外,我正在使用requirejs – Decrypter

+0

那麼這意味着exec在運行vakata對象之前運行,如果您查看鏈接的js文件中的第51行,將會找到您要查找的內容。該對象從外部世界關閉,如果你想修改它,你將不得不改變源。 –

+0

好的。謝謝埃裏克。我以爲我不得不編輯源代碼。我想避免這種情況下的升級問題。我會考慮一個替代方案 – Decrypter