我努力理解在這種情況下使用noConflict有道有道:使用jQuery noConflict
- 我的代碼加載一個網頁上的小工具,我不控制
- 這網頁可以使用已經包含了jQuery和/或其他庫比如Prototype $
- 我的窗口小部件需要自己的jQuery的版本(這是我想要加載任何已經加載的頁面上)
到目前爲止,我小工具ks,但是在加載之後,原始網頁被破壞,因爲$指向我自己版本的jQuery。
感謝您的幫助!
我努力理解在這種情況下使用noConflict有道有道:使用jQuery noConflict
到目前爲止,我小工具ks,但是在加載之後,原始網頁被破壞,因爲$指向我自己版本的jQuery。
感謝您的幫助!
$.noConflict()
將$
重置爲jQuery加載前的狀態。
<script type="text/javascript" src="other_lib.js"></script>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$.noConflict();
// Code that uses other library's $ can follow here.
</script>
它也可以用來命名的jQuery別的東西(因爲它重置$
變量後返回的jQuery)。
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$jq = $.noConflict();
// jQuery is now `$jq` instead of `$`
</script>
所以你可以做的是使用$
作爲當前jQuery和$jq
爲您的版本。
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="your_jquery.js"></script>
<script type="text/javascript">
$jq = $.noConflict();
// Your jQuery is `$jq`, and the original jQuery is `$`
</script>
謝謝,很好的回答! – Blacksad 2012-02-13 18:17:48
不客氣。很高興我能幫上忙。 :-) – 2012-02-13 18:20:02
嘗試在「您的jQuery版本」加載後立即運行此代碼。
$.noConflict();
如果你已經過書面映射到$
以前的圖書館,它不會幫助。但是如果你知道以前的庫是什麼(並且它不是jQuery),那麼你可以使用類似$ = MooTools
的東西將它重新映射到$
。
整個代碼會讀...
$.noConflict(); // leaves jQuery available using jQuery()
$ = MooTools; // maps the original library (MooTools in this example) back to $
jQuery.noConflict存在過度使用$
變量的刪除與其他JavaScript庫衝突。它不會幫助你與jQuery版本衝突。使用它的正確方法是增加一個script
標籤像這樣,加載的jQuery的script
標籤後:
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
jQuery.noConflict();
</script>
想必你的小部件不會是能夠做到這一點(你的問題說,它不無法控制網頁),這意味着您必須將此行爲記錄爲您窗口小部件的要求。換句話說,你的widget的用戶將不得不爲你調用jQuery.noConflict。
有什麼問題的代碼?你目前的問題太含糊,所以不能在沒有更多細節的情況下回答。 – 2012-02-13 17:25:22
你自己的JQuery版本是什麼意思?在頁面中加載JQuery庫兩次將不起作用。當兩個不同的JS庫加載時(例如JQuery和Mootools),將使用JQuery noConflict。爲了確保您使用的是JQuery庫,您可以通過noConflict()來訪問它。 – Imraan 2012-02-13 17:30:41
@Imraan:你可以加載2個不同版本的jQuery。'noConflict'返回jQuery對象,所以你可以將它分配給另一個變量。 – 2012-02-13 17:54:58