Як перевірити, яку версію jQuery завантажують?


466

Як перевірити, яка версія jQuery завантажується на клієнтську машину? У клієнта може бути завантажений jQuery, але я не знаю, як це перевірити. Якщо вони завантажені, як перевірити версію та префікс, такі як:

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

2
У клієнта може бути завантажений jQuery, якщо ви включили його як файл для завантаження. У чому саме проблема?
Джаред Фарріш

1
Не знаю, для чого потрібен ОП, але якщо ви робите скрипт або плагін, який вимагає jQuery, ви можете перевірити і випустити помилку, якщо її немає або занадто стара версія.
JJJ

Відповіді:


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

29
Є два способи перевірити завантажену версію jquery: jQuery.fn.jqueryта jQuery().jquery(скорочення:) $.fn.jquery $().jquery. Про це я детально писав із посиланнями на вихідний код jquery, якщо ви хочете копати глибше.
Узбекйон

3
ще простіша версія if (window.jQuery) { // jQuery is loaded => print the version alert(jQuery.fn.jquery); }
asherrard

6
Чек на невизначений повинен бути!==
планкгуй

1
Зверніть увагу на малі літери :)
Червоний горох

2
Не використовуйте jQuery().jquery. Він створює об’єкт jQuery ні за що, просто використовуйте те, що говорить відповідь.

30

Ви можете просто перевірити, чи jQueryіснує об'єкт:

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

jQuery().jquery має номер версії.

Що стосується префікса, він jQueryповинен завжди працювати. Якщо ви хочете скористатися, $ви можете прив’язати свій код до функції та передати jQueryїй як параметр:

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

3
if( jQuery )Згенерує виняток , якщо jQueryневідомо , і він не буде працювати.
Дарин Димитров

Може, загорнути його try {...}catch(e){...}?
Акаш

2
Не використовуйте jQuery().jquery. Він створює об’єкт jQuery ні за що. (скопійовано коментар з іншої відповіді)
törzsmókus

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

Якщо ви повертаєте номер версії - як правило, як рядок - тоді jQuery завантажується, і саме з якою версією ви працюєте. Якщо не завантажений, то ви повинні повернутися undefinedабо, можливо, навіть помилка.

Досить старе питання, і я бачив декількох людей, які вже згадували мою відповідь у коментарях. Однак я вважаю, що іноді чудові відповіді, які залишаються як коментарі, можуть залишитися непоміченими; особливо, коли є багато коментарів до відповіді, ви можете виявити, що копаєте купу з них, шукаючи дорогоцінний камінь. Сподіваємось, це допомагає комусь!


1
@Janar Ні, це зовсім не так. На відміну надто складний, ІМО.
Rockin4Life33

18

… Тільки тому, що цей метод досі не згадували - відкрийте консоль і введіть:

$ === jQuery

Як @Juhana згадано вище $().jquery, поверне номер версії.


щось на кшталт($ === jQuery)?$().jquery:'no jquery';
UselesssCat

1
ОП попросив перевірити завантажену версію. Це не відповідає на запитання.
Акіра Ямамото

16

Я виявив, що це найкоротший і найпростіший спосіб перевірити, чи завантажений jQuery:

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

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

Цей метод використовується http://html5boilerplate.com та інші.


@AndreFigueiredo Я відредагував відповідь, щоб вказати, як отримати номер версії, переконавшись, що jQuery завантажений.
Маркус Амальтея Магнусон

5

Мої переваги:

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

Результат:

завантажено jQuery 1.8.0


Я отримую: не визначено
Джо Л.

Це трохи краще, але реєстрація не така корисна під час роботи над додатком. Вам краще спочатку зберегти змінну. let has$ = typeof jQuery === 'function'; console.log('jQuery' + (has$ ? ` version ${jQuery.fn.jquery} loaded.` : ' is not loaded.'));

3

Фактично слід зафіксувати це у блоці спробу / лову для 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 не справляється typeof jQuery != 'undefined'? Це правда для кожного ІЕ або лише для старших?
JJJ

Досить впевнений, що це для старих версій. Тим не менш, це більше бентежить, ніж велика помилка JS, що заважає вашій сторінці працювати, незалежно від того, чи це помилка браузера;)
AlienWebguy

Це дійсно мені дуже допомогло. Я намагався отримати точну поведінку в Firefox та IE для перевірки завантаження jQuery чи не використання WatiN. Зараз із цим вирішенням я дуже радий. Дякую тобі!
rahoolm


1

Перейдіть до консолі розробника> консоль і напишіть одну з наступних команд jQuery.fn.jquery console.log(jQuery().jquery);



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

.....


1
Деякі інші бібліотеки використовують $.
Джаред Фарріш

2
Що робити, якщо вони використовують прототип? Або щось інше, що використовує $? Це не властиво jQuery.
JJJ

Що робити, якщо jQueryне завантажений? (Це кине а ReferenceError). Вищеназвана відповідь правильна, і саме тому люди голосують за вашу відповідь.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.