今天做專案的時候,寫了乙個ajax提交的js函式,然後在js除錯的時候,提示發現 $.ajax ,前面的$ 符號不見了,通過網上搜尋找到了下面的解決方法
jquery中需要用到$符號,如果其他js庫也定義了$符號,那麼就會造成衝突,會影響到js**的正常執行,目前從網上找到了不錯的解決方法,大家可以參考下
jquery中需要用到$符號,如果其他js庫(例如大名鼎鼎的prototype)也定義了$符號,那麼就會造成衝突,會影響到js**的正常執行。jqeury提供了一些方案來避免這個問題,讓我們來看看這幾個方案有什麼區別
方案1:
引入noconflict(),將$替換為其他符號
**如下:
var $j = jquery.noconflict();
$j(document).ready(function());
});缺點:引入了這段**後,不僅是當前的js檔案,該html引用的所有js中,如果有用到jquery中的$,都得用$j來代替之前的$
方案2:
ready函式是jquery的入口函式,可以
將$(document).ready(function()
缺點:只對ready巢狀內的**有效,對巢狀外的**是無效的。如果你所有的邏輯,都在寫ready函式中,那沒問題。但我們一般都會在ready函式之外寫一些子函式,然後ready函式再去呼叫這些函式。這個方案對這些函式是無效的,因此這套方案有侷限性。
給js內容包上乙個函式
**如下:
jquery(function($)
或者 **如下:
(function($) )(jquery);
方案4 (個人理解)
一般$衝突的原因是乙個頁面引用了多個jquery檔案造成的,為了保證專案的jquery版本庫的一致性,最好只使用乙個jquery版本,就可以避免類似的問題發生。
這個方法,沒有上面兩個方案的缺點,只會影響到被包在jquery(function($){}中的**。
不會影響到其他js**,這一點很重要。試想一下,假如你寫了乙個js公共元件,該元件需要用到jquery,為了提高魯棒性,需考慮$符號衝突問題。如果使用方案1,那麼別人在使用時,還得遵守你的約定,把自己js**中的$改成$,而如果使用方案3,既能避免$衝突對該元件的影響,又無需要求使用公共元件的人修改自己的**。
jQuery處理 符號衝突問題
我們知道,jquery使用 符號作為jquery的簡寫,使用 符號就可以進行各種jquery的操作,那麼如果我們使用的其他框架也使用 符號,那該怎麼辦?jquery以及幫我們考慮好了這個問題,提供以下兩種解決方案。使用jquery代替 utf 8 script noconflict 加不加此句後面 ...
解決Jquery衝突的問題
jquery自誕生以來,版本越來越多,而且jquery官網的新版本還在不斷的更新和發布中,現已經達到了1.6.4版本,但是我們在以前的專案中就已經使用了舊版本的jquery,比如已經出現的 1.3.x 1.4.x 1.5.x 1.6.2等等。由於專案的需要,必然也需要不斷的使用較新版的jquery,...
jQuery基礎(二) 解決jQuery衝突
專案中,jquery衝突很常見,又容易帶來各種奇葩的問題,單獨整理。衝突就是指乙個專案中可能會使用多個框架,不同的框架又使用相同的符號 方法等,就會造成衝突。比如jquery用 來代替,另乙個框架可能也用 來代替,jquery中有a方法,另乙個框架也有a方法,這樣就會造成混亂與衝突。jquery衝突...