2012-03-21 123 views
0

我需要運行兩個版本的jQuery。我試過j到jQuery的別名。這是我的代碼。同時運行jQuery的多個版本

j = jQuery.noConflict(); // No conflict with older version of jQuery 
(function($) { 
    $('#any_id_or_class').on("click", function(event){ 
    console.log('clicked'); 
    }); 
})(j); 

我使用$ .fn.jquery記錄的jQuery的版本,我得到,如果我從我的功能範圍之內或之外登錄兩個不同的版本根據。如果我點擊文檔$('body')的「body」,就會得到輸出結果,但如果我在頁面上使用任何類或id,則什麼都不會發生?想法?

編輯1:很明顯,我只想使用一個版本的jQuery,但這不是一個選項。

編輯2:下面是我如何得到它的工作原理,並不理想,因爲我想在函數範圍內嘗試和別名$。

j = jQuery.noConflict(); // No conflict with older version of jQuery 

j(document).ready(function(){ 
    j('#masthead').on("click", function(event){ 
    console.log('clicked'); 
    }); 
}); 
+1

爲什麼要用比1個版本的更多工作? – Joseph 2012-03-21 21:44:46

+0

使用較新版本並將您所依賴的任何棄用函數映射到那裏較新的版本會不會更容易? 「# – 2012-03-21 21:45:17

+1

_」但是這裏是所有錯誤的地方「_ **它從一開始就出錯!** – gdoron 2012-03-21 21:45:39

回答

1
var j = jQuery.noConflict(); // Unbinds the last included version of Jquery 

    j('#any_id_or_class').on("click", function(event){ 
    console.log('clicked'); 
    }); 

的noConflict作業將取消註冊的最後一個包括jQuery的文件,所以一定要確保最後一個包含的是新版本有。對

+0

啊,這可能是問題所在,但這仍然不能解決需要兩個版本的問題。 – 2012-03-21 21:57:26

+0

它應該做的。如果你包含兩個jquerys並且像上面那樣使用noconflict,那麼使用$(「」)的任何東西都會使用第一個jquery,任何使用j(「」)的東西都會使用第二個jquery。我不完全確定使用classes/id有什麼問題 - 是否有任何控制檯錯誤?你使用$()還是j()?你確實把j定義爲var,就像我上面提到的那樣; var j = jQuery.noConflict(); – RTulley 2012-03-21 22:03:31

+0

我已經把j的全部功能都別名了,所以我仍然可以在其中使用$。我會盡量使用j。 – 2012-03-21 22:08:19