Як перевірити, яку версію 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.