Làm cách nào để kiểm tra phiên bản jQuery nào được tải?


466

Làm cách nào để kiểm tra phiên bản jQuery nào được tải trên máy khách? Máy khách có thể đã tải jQuery nhưng tôi không biết cách kiểm tra nó. Nếu họ đã tải, làm cách nào để kiểm tra phiên bản và tiền tố, chẳng hạn như:

$('.class')
JQuery('.class')

2
Máy khách có thể đã tải jQuery nếu bạn đưa nó vào dưới dạng tệp để tải xuống. Vấn đề là gì?
Jared Farrish

1
Không biết OP cần nó để làm gì, nhưng nếu bạn đang tạo tập lệnh hoặc plugin yêu cầu jQuery, bạn có thể kiểm tra và đưa ra lỗi nếu không có hoặc phiên bản quá cũ.
JJJ

Câu trả lời:


900
if (typeof jQuery != 'undefined') {  
    // jQuery is loaded => print the version
    alert(jQuery.fn.jquery);
}

29
Có 2 cách để kiểm tra phiên bản jquery hiện đang tải: jQuery.fn.jqueryjQuery().jquery(tốc ký $.fn.jquery $().jquery:). Tôi đã viết về nó một cách chi tiết với các liên kết đến mã nguồn jquery nếu bạn muốn tìm hiểu sâu hơn.
Uzbekjon

3
thậm chí phiên bản đơn giản if (window.jQuery) { // jQuery is loaded => print the version alert(jQuery.fn.jquery); }
asherrard

6
Việc kiểm tra không xác định sẽ là!==
plankguy

1
Lưu ý chữ thường :)
Hạt đậu đỏ

2
Đừng sử dụng jQuery().jquery. Nó tạo ra một đối tượng jQuery không có gì, chỉ cần sử dụng những gì câu trả lời nói.

30

Bạn chỉ có thể kiểm tra nếu jQueryđối tượng tồn tại:

if( typeof jQuery !== 'undefined' ) ... // jQuery loaded

jQuery().jquery có số phiên bản.

Đối với tiền tố, jQuerynên luôn luôn làm việc. Nếu bạn muốn sử dụng, $bạn có thể bọc mã của mình vào một hàm và truyền jQuerycho nó dưới dạng tham số:

(function( $ ) {
    $( '.class' ).doSomething();  // works always
})( jQuery )

3
Các if( jQuery )sẽ ném một ngoại lệ nếu jQuerykhông được biết và nó sẽ không làm việc.
Darin Dimitrov

Có lẽ bọc nó trong try {...}catch(e){...}?
Akash

2
Đừng sử dụng jQuery().jquery. Nó tạo ra một đối tượng jQuery không có gì. (sao chép bình luận từ một câu trả lời khác)
törzsmókus

19
$.fn.jquery
// If there is concern that there may be multiple implementations of `$` then:
jQuery.fn.jquery

Nếu bạn lấy lại số phiên bản - thường là một chuỗi - thì jQuery đã được tải và đó là phiên bản bạn đang làm việc. Nếu không được tải thì bạn nên quay lại undefinedhoặc thậm chí có thể xảy ra lỗi.

Câu hỏi khá cũ và tôi đã thấy một vài người đã đề cập đến câu trả lời của tôi trong các bình luận. Tuy nhiên, tôi thấy rằng đôi khi những câu trả lời tuyệt vời còn lại khi bình luận có thể không được chú ý; đặc biệt là khi có rất nhiều bình luận cho một câu trả lời, bạn có thể thấy mình đang đào bới hàng đống trong số họ đang tìm kiếm một viên đá quý. Hy vọng điều này sẽ giúp ai đó!


1
@Janar Không, nó hoàn toàn không giống nhau. Quá phức tạp trong tương phản, IMO.
Rockin4Life33

18

Chỉ vì phương pháp này chưa được đề cập cho đến nay - hãy mở giao diện điều khiển và gõ:

$ === jQuery

Như @Juhana đã đề cập ở trên $().jquerysẽ trả về số phiên bản.


đại loại như($ === jQuery)?$().jquery:'no jquery';
Vô dụng

1
OP yêu cầu kiểm tra phiên bản được tải. Điều này không trả lời câu hỏi.
Akira Yamamoto

16

Tôi đã thấy đây là cách ngắn nhất và đơn giản nhất để kiểm tra xem jQuery đã được tải chưa:

if (window.jQuery) {
    // jQuery is available.

    // Print the jQuery version, e.g. "1.0.0":
    console.log(window.jQuery.fn.jquery);
}

Phương pháp này được sử dụng bởi http://html5boilerplate.com và những người khác.


@AndreFigueiredo Tôi đã chỉnh sửa câu trả lời để bao gồm cách lấy số phiên bản, sau khi đảm bảo jQuery được tải.
Markus Amalthea Magnuson

5

Sở thích của tôi là:

console.debug("jQuery "+ (jQuery ? $().jquery : "NOT") +" loaded")

Kết quả:

Đã tải jQuery 1.8.0


Tôi nhận được: không xác định
Joe L.

Điều này tốt hơn một chút, nhưng đăng nhập không hữu ích khi làm việc trên một ứng dụng. Trước tiên, bạn nên lưu một biến. let has$ = typeof jQuery === 'function'; console.log('jQuery' + (has$ ? ` version ${jQuery.fn.jquery} loaded.` : ' is not loaded.'));

3

Bạn thực sự nên gói cái này trong một khối thử / bắt cho IE:

// Ensure jquery is loaded -- syntaxed for IE compatibility
try
{
    var jqueryIsLoaded=jQuery;
    jQueryIsLoaded=true;
}
catch(err)
{
    var jQueryIsLoaded=false;
}
if(jQueryIsLoaded)
{
    $(function(){
        /** site level jquery code here **/
    });
}
else
{
    // Jquery not loaded
}

IE không xử lý typeof jQuery != 'undefined'? Điều này đúng với mọi IE hay chỉ những cái cũ hơn?
JJJ

Khá chắc chắn đó là phiên bản kế thừa. Vẫn còn điều đáng xấu hổ hơn một lỗi JS lớn của ol khiến trang của bạn không hoạt động, bất kể đó là lỗi của trình duyệt;)
AlienWebguy

Điều này đã thực sự giúp tôi rất nhiều. Tôi đã vật lộn để có được hành vi chính xác trên Firefox và IE để kiểm tra xem jQuery có được tải hay không sử dụng WatiN. Bây giờ với cách giải quyết này, tôi rất hạnh phúc. Cảm ơn bạn!
rahoolm

2

Trong một dòng và mức tối thiểu của tổ hợp phím (rất tiếc!):

alert($().jquery);

1

Chuyển đến bảng điều khiển Tool> của nhà phát triển và viết một trong các lệnh sau jQuery.fn.jquery console.log(jQuery().jquery);


0

Theo Template monster trên blog , đánh máy, những bên dưới kịch bản sẽ cung cấp cho bạn phiên bản của jquery trong các trang web bạn đang đi qua bây giờ.

 1. console.log(jQuery.fn.jquery);
 2. console.log(jQuery().jquery);

-2
if (jQuery){
   //jquery loaded
}

.....


1
Một số thư viện khác sử dụng $.
Jared Farrish

2
Nếu họ đang sử dụng Prototype thì sao? Hoặc bất cứ điều gì khác sử dụng $? Nó không phải là duy nhất cho jQuery.
JJJ

Nếu jQuerykhông được tải thì sao? (Nó sẽ ném a ReferenceError). Câu trả lời trên là chính xác và đó là lý do tại sao mọi người bỏ phiếu trả lời của bạn.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.