Feed on
Posts
Comments
Email訂閱

111216 jquery conflict

問題描述:

在IE與Firefox(google chrome無此問題),在網頁都載入後,繼續呼叫jquery函數,出現 「$ is not defined」。但是jquery有正常載入,且在所有其他script之前就載入,所以應該不是jquery延遲載入的問題。

經搜尋網路資訊,大多懷疑是jquery未完全載入,就先執行jquery函數。但後來有看到文章提到 jquery的縮寫->$,可能與其他函式庫衝突,譬如Protocotype。因此試著調整在主頁中載入script之後,加入以下程式碼,將$替換成 $j;並修改網頁,將$替換成 $j。

<script type="text/javascript">
   var $j = jQuery.noConflict();
</script>

如此果然解決載入之後Javacript程式碼執行jquery的問題。但是在載入之前的其他.js檔中的的$j,則可能仍先於以上該段替換程式碼的執行(因為在document ready時就開始執行),而無法辨認$j。因此這些在網頁載入進行中時就會先執行的js檔案,可以不使用縮寫,也就是使用jQuery,這樣就不會有辨認問題了

 

留言區