我需要在現有網站的scripts.js
中使用一些腳本。
此網站已上線了很長時間,我無法觸摸腳本文件。
我將其包含在另一個頁面中。腳本文件中有很多jQuery調用。我包含它的地方沒有jQuery。
我想廢除所有$()
類型的東西。我試過這...
$ = function() { };
之前我包括scripts.js
它似乎並沒有工作。我仍然得到錯誤,如
的$(document)是未定義
有沒有一種方法能夠排空所有這些jQuery的電話?
感謝
我需要在現有網站的scripts.js
中使用一些腳本。
此網站已上線了很長時間,我無法觸摸腳本文件。
我將其包含在另一個頁面中。腳本文件中有很多jQuery調用。我包含它的地方沒有jQuery。
我想廢除所有$()
類型的東西。我試過這...
$ = function() { };
之前我包括scripts.js
它似乎並沒有工作。我仍然得到錯誤,如
的$(document)是未定義
有沒有一種方法能夠排空所有這些jQuery的電話?
感謝
即使你得到那個工作,你仍然會有問題,因爲代碼與假設寫了jQuery的存在。是的,你可以避開上線$ is null or not defined
象這樣的錯誤:
$('div.foo');
但是有在只是寫該行毫無意義:總是會有對返回的對象操作:
$('div.foo').html('blah');
後, NOP的jQuery功能,你會得到一個"html" is not a function
錯誤,依此類推。你可以做的唯一方法就是填寫每一個可能的jQuery方法的骨架,確保每個方法在適當的時候自行返回。
...或者只是把它改寫正確...
我越想到它,越是意識到它會更容易地挑出我需要的少數函數。 – alex 2010-05-11 02:55:04
嗯,這是毫不奇怪,$(document)
是不確定的,因爲你不返回從您的佔位符函數的值。因此,像$(document).ready(function(){});
這樣的東西自然會出錯。
基本上,如果我理解正確,你需要$
是一個什麼都不做的函數,並且在調用任何成員函數時不返回任何對象。而且,$本身的調用成員函數(例如$.ajax()
)應該具有相同的行爲。
你可以用__noSuchMethod__
做到這一點,這是不幸的是非標準:
window.$ = function()
{
var doNothingObj = new (function()
{
this.__noSuchMethod__ = function()
{
return doNothingObj;
}
})();
return doNothingObj;
};
window.$.__noSuchMethod__ = window.$;
這將允許任意鏈:
$(document).ready(function(){});
$("#foo").animate().animate();
$.ajax({ url: "file.html"});
等
當然,一個更加健壯解決方案是重構使用jQuery的代碼。
謝謝,有趣的,但我確實去了更安全的解決方案:) +1 – alex 2010-05-11 03:19:27
你爲什麼不把你想要的東西從'scripts.js'中複製出來,放在一個單獨的文件中,並且包含它? – Syntactic 2010-05-11 02:29:01
@句法我想堅持幹。 – alex 2010-05-11 02:30:02
有時你需要稍微弄溼。 – 2010-05-11 02:31:05