2009-07-13 56 views
12

Có thể có 2 phiên bản jQuery khác nhau trong cùng một tài liệu và khiến chúng không va chạm với nhau không?Hai phiên bản jQuery trên cùng một trang

Ví dụ: nếu tôi tạo một bookmarklet và muốn căn cứ mã trên jQuery. Dấu trang này được tiêm trên một số trang sử dụng một phiên bản khác của jQuery, sau đó mã của tôi sẽ ghi đè lên phiên bản được sử dụng trên trang.

Có thể tránh điều đó không? Hoặc có một số thư viện khác cung cấp chức năng này Hoặc có lẽ tôi nên suy nghĩ lại toàn bộ điều.

Cảm ơn câu trả lời và gợi ý,

bob

+1

Bạn có thể kiểm tra xem jQuery đã có trên trang chưa trước khi tiêm lại. –

+3

Bạn chắc chắn nên suy nghĩ lại. Bạn nên cập nhật các chức năng cũ hơn để làm việc với jQuery mới, bao gồm cả hai chỉ là một tấn sưng lên và một mong muốn cho va chạm. –

+0

Bạn đã có quyền kiểm soát phiên bản jQuery đang được thêm vào trang chưa? Bạn không muốn khách truy cập của mình phải tải xuống phiên bản KHÁC của thư viện nếu họ có thể trợ giúp - thực tiễn không tốt và làm tăng kích thước tệp của tài liệu cho khách truy cập của bạn. –

Trả lời

12

jQuery đi kèm với cách tránh va chạm. Sau khi bạn tải phiên bản đầu tiên, bạn có thể gán phiên bản đó cho một biến khác.

var $j = jQuery.noConflict(); 

Sau đó tải phiên bản jQuery thứ hai của bạn. Người đầu tiên bạn tải có thể được truy cập với $ j (...) trong khi người thứ hai có thể được truy cập với $ (...).

Ngoài ra, ai đó đã thực hiện một little helper nhằm cố gắng chuyển đổi giữa các phiên bản khác nhau dễ dàng hơn.

+0

bob không kiểm soát thời điểm phiên bản đầu tiên được tải vì điều này đang xảy ra trên trang web của bên thứ ba thông qua một cửa hàng sách. bạn có thể gọi noConflct trước khi thêm phiên bản mới hơn thông qua createElement ('script') - sẽ 'nâng cấp' trang web của bên thứ ba. bạn có thể giả định mã của bên thứ 3 có tương thích không? – russau

+0

Với trình trợ giúp Phiên bản, bạn có thể chuyển đổi qua lại giữa các phiên bản jQuery khác nhau bất cứ khi nào bạn muốn. Chỉ cần nói Versions.use ('jquery', 'default') hoặc Versions.use ('jquery', 'latest') sau khi bạn đã thêm chúng để chuyển đổi. Nếu mã của anh ấy đang sử dụng phiên bản mới nhất và trang web phần thứ ba thì không, anh ấy chỉ phải đảm bảo rằng anh ấy đã đặt phiên bản chính xác ở đầu và cuối mã của anh ấy. – Chris

2

Dưới đây là một cách để phát hiện là JQuery đã có mặt: jQuery in widget

làm việc ra phiên bản lâu đời nhất của JQuery mã của bạn sẽ làm việc với .. Và từ chối làm việc nếu phiên bản hiện tại quá cũ. Chỉ có một vài người sẽ bỏ lỡ, hầu hết các trang web sử dụng JQuery đều được cập nhật ..

0

Tại sao không chỉ có các phiên bản javascript khác nhau, cho các phiên bản khác nhau của jquery, vì vậy, hãy xem phiên bản nào trên trang và nhận mã thích hợp sẽ hoạt động trên phiên bản jquery đó.

Điều này sẽ an toàn hơn, vì bất kỳ điều gì khác có thể rất mong manh, vì có vẻ như bạn không có quyền kiểm soát phiên bản jquery sẽ nằm trên trang.

Các vấn đề liên quan