Как проверить, какая версия jQuery загружена?


466

Как проверить, какая версия jQuery загружена на клиентский компьютер? Клиент может загрузить JQuery, но я не знаю, как это проверить. Если они загружены, как я могу проверить версию и префикс, такой как:

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

2
Клиент может загрузить JQuery, если вы включили его в качестве файла для загрузки. В чем именно проблема?
Джаред Фарриш

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

Ответы:


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

29
Есть 2 способа проверить загруженную в настоящий момент версию jquery: jQuery.fn.jqueryи jQuery().jquery(shorthands:) $.fn.jquery $().jquery. Я написал об этом подробно со ссылками на исходный код jquery, если вы хотите копать глубже.
Узбекджон

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

6
Проверка на неопределённость должна быть!==
plankguy

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
@ Джанар Нет, это совсем не то же самое. Слишком сложный в отличие, ИМО.
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 загружен


Я получаю: undefined
Джо Л.

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

3

Вы должны фактически обернуть это в блок try / catch для 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'? Это правда для каждого IE или только для старых?
JJJ

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

Это действительно очень помогло мне. Я изо всех сил пытался получить точное поведение через Firefox и IE для проверки, загружен ли jQuery или не использует WatiN. Теперь с этим обходным путем я очень счастлив. Спасибо тебе!
rahoolm


1

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


0

Как описано в блоге Template monster , эти сценарии ниже приведут вам версию jquery на сайте, который вы просматриваете сейчас.

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

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

.....


1
Некоторые другие библиотеки используют $.
Джаред Фарриш

2
Что если они используют Prototype? Или что-нибудь еще, что использует $? Это не уникально для jQuery.
JJJ

Что делать, если jQueryне загружен? (Бросит ReferenceError). Приведенный выше ответ является правильным, и поэтому люди отказываются голосовать за ваш ответ.
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.