簡體   English   中英

每個站點組件都包含 jQuery,只有 1 個有效

[英]Site components each include jQuery, only 1 works

好吧,由於工作范圍和保密性,我不能包含示例代碼,但是,我會盡力解釋我的情況。

每個組件的一般格式:每個都是完全相同的格式!

CSS tags - never any problems here
HTML - main html for the component
<script type="application/javascript" src="pathto/jquery-2.0.3.min.js"></script>
Other jQuery plugins required by the component
<script type="application/javascript" src="pathto/componentPlugin.js"></script>

我目前在做的網站有很大的 dashlet 組件,每個組件由不同的人完成,每個組件完全獨立於任何其他組件。 這些組件是通過設置選項,所以可以顯示或不顯示,在頁面上以任意順序顯示。

問題是其中 2 個組件需要 jQuery,目前都使用 jquery-2.0.3 頭部根本沒有訪問權限,因此添加 jQuery 沒有選項,必須包含在每個組件中。 每個組件還包括許多 jQuery 插件。

為了便於說明,我們將組件1稱為“C1”,組件2稱為“C2”。如果頁面上一次只有其中1個,則沒有問題,因此只有當它們都顯示時才會出現問題。

確切的錯誤取決於組件的順序,但主要前提是總有一些插件出現未定義,有時, $ 未定義或 $.fn 未定義。

我不知道用戶會在頁面上有什么,因為它在那里設置,但為了測試,我知道如果我先有 C1 包含 jQuery,然后 C2 並注釋掉 jQuery 的腳本標記(基本上只讓 C1 加載 jQuery ) 一切正常。

問題出在包括 jQuery 在內的兩個組件上,而且總是有問題。

有任何想法嗎?

var $ = Jquery

嘗試上面的解決方案或更改您的 jQuery 版本。

我建議您使用 jQuery 1.9 版

你說很多人都在研究組件。 每個人都必須確保那里的代碼不與其他代碼相互引用。 所以他們必須在動態加載 jquery 之前包含一個檢查。 例如:

if(!jQuery){
    //create jQuery-script-tag here
}

No-Conflict-Mode 在這里不是解決方案,因為無論如何 jQuery 被定義了兩次。 在此模式下僅刪除 $。

還要確保每個人都封裝了這樣的代碼:

(function($, undefined){

    $(function(){

        // dom ready
        // do your stuff

    });

})(jQuery);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM