Có, jQuery.noConflict
là một khởi đầu tốt, nhưng vì "thư viện khác" bạn đang sử dụng cũng là jQuery, có thể sẽ có biến chứng.
Khi bạn tải jQuery, nó định nghĩa $
và jQuery
làm biến toàn cục. Sử dụng .noConflict
sẽ "từ bỏ quyền kiểm soát biến số $
" - nghĩa là bất cứ điều gì $
trước đó, nó sẽ được đặt lại. Nếu v1.3.2 được tải trước và bạn tải gói mới nhất (1.6.4 ngay bây giờ) tiếp theo, .noConflict
sẽ làm cho $
tham chiếu đến v1.3.2 nhưng jQuery
sẽ vẫn tham chiếu đến 1.6.4.
Về cơ bản, bạn cần đặt bí danh jQuery trước khi bạn tải gói mới nhất. See my fiddle used to simulate your situation (cũng được dán bên dưới).
<script type="text/javascript">
//alias v.1.3.2
var $132 = $;
</script>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.pack.js"></script>
<script type="text/javascript">
//alias v1.6.4
var $164 = $, jQuery164 = $;
//reset original variables to v1.3.2
$ = jQuery = $132;
console.log("v1.3.2: ", $().jquery, jQuery().jquery)
console.log("v1.6.4: ", $164().jquery, jQuery164().jquery)
$('div') //selected using v1.3.2
$164('div') //selected using v1.6.4
</script>
Sau khi tải 1.6.4, bạn cần phải bí danh nó và thiết lập $
và jQuery
trở lại 1.3.2 đối tượng. Điều này không sử dụng .noConflict
bởi vì nó về cơ bản không giống nhau. RichFaces sẽ tiếp tục hoạt động bằng cách sử dụng 1.3.2 và bạn sẽ viết mã của mình dựa vào phiên bản 1.6.4 bí danh. Trong fiddle của tôi, điều đó có nghĩa là sử dụng $164
thay vì sử dụng $
. Tôi hy vọng điều đó đúng. Tôi chắc chắn fiddle sẽ rõ ràng hơn.
Cuối cùng, bạn không nên sử dụng mã này bằng cách sử dụng jquery-latest.pack.js
nhưng bạn không bao giờ nên sử dụng mã đó trên trang web sản xuất của mình. Lý do là vì tại một số thời điểm trong tương lai, jQuery sẽ được cập nhật. Nếu bạn đang tải gói mới nhất, các bản cập nhật đó có thể phá vỡ chức năng của trang web của bạn mà bạn thậm chí không biết. Sẽ an toàn hơn khi chỉ chọn một phiên bản và tuân theo nó, chỉ nâng cấp chỉ khi bạn xác nhận rằng trang web của bạn sẽ tiếp tục hoạt động đúng.
@Moin Zaman [Bài đăng này] (http://stackoverflow.com/questions/3881953/how-do-i-use-the-latest-version-of-jquery-and-get-back-the-for -jquery-in-rich) cho biết chúng ta có thể sử dụng nhiều phiên bản của jQuery cạnh nhau, nhưng không nói như thế nào. –