Как проверить, какая версия jQuery загружена на клиентский компьютер? Клиент может загрузить JQuery, но я не знаю, как это проверить. Если они загружены, как я могу проверить версию и префикс, такой как:
Клиент может загрузить JQuery, если вы включили его в качестве файла для загрузки. В чем именно проблема?
Джаред Фарриш
1
Не знаю, для чего нужен ОП, но если вы создаете скрипт или плагин, требующий jQuery, вы можете проверить и выдать ошибку, если ее там нет или слишком старая версия.
Есть 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объект:
Что касается префикса, jQueryвсегда должно работать. Если вы хотите использовать, $вы можете обернуть ваш код в функцию и передать jQueryей в качестве параметра:
(function( $ ){
$('.class').doSomething();// works always})( jQuery )
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или, возможно, даже ошибка.
Довольно старый вопрос, и я видел несколько человек, которые уже упоминали мой ответ в комментариях. Тем не менее, я считаю, что иногда отличные ответы, оставленные в качестве комментариев, могут остаться незамеченными; особенно, когда есть много комментариев к ответу, вы можете копаться в кучах их в поисках драгоценного камня. Надеюсь, это поможет кому-то!
Это немного лучше, но регистрация не так полезна при работе с приложением. Вам лучше сначала сохранить переменную. 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 compatibilitytry{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. Теперь с этим обходным путем я очень счастлив. Спасибо тебе!
Что если они используют Prototype? Или что-нибудь еще, что использует $? Это не уникально для jQuery.
JJJ
Что делать, если jQueryне загружен? (Бросит ReferenceError). Приведенный выше ответ является правильным, и поэтому люди отказываются голосовать за ваш ответ.
Ответы:
источник
jQuery.fn.jquery
иjQuery().jquery
(shorthands:)$.fn.jquery
$().jquery
. Я написал об этом подробно со ссылками на исходный код jquery, если вы хотите копать глубже.if (window.jQuery) { // jQuery is loaded => print the version alert(jQuery.fn.jquery); }
!==
jQuery().jquery
. Он создает объект jQuery даром, просто используйте то, что говорит ответ.Вы можете просто проверить, существует ли
jQuery
объект:jQuery().jquery
имеет номер версии.Что касается префикса,
jQuery
всегда должно работать. Если вы хотите использовать,$
вы можете обернуть ваш код в функцию и передатьjQuery
ей в качестве параметра:источник
if( jQuery )
Будет сгенерировано исключение , еслиjQuery
неизвестно , и он не будет работать.try {...}catch(e){...}
?jQuery().jquery
. Он создает объект jQuery даром. (скопированный комментарий из другого ответа)Довольно старый вопрос, и я видел несколько человек, которые уже упоминали мой ответ в комментариях. Тем не менее, я считаю, что иногда отличные ответы, оставленные в качестве комментариев, могут остаться незамеченными; особенно, когда есть много комментариев к ответу, вы можете копаться в кучах их в поисках драгоценного камня. Надеюсь, это поможет кому-то!
источник
... только потому, что этот метод не был упомянут до сих пор - откройте консоль и введите:
Как упоминалось выше @Juhana
$().jquery
вернет номер версии.источник
($ === jQuery)?$().jquery:'no jquery';
Я обнаружил, что это самый короткий и простой способ проверить, загружен ли jQuery:
Этот метод используется http://html5boilerplate.com и другими.
источник
Я предпочитаю:
Результат:
JQuery 1.8.0 загружен
источник
let has$ = typeof jQuery === 'function'; console.log('jQuery' + (has$ ? ` version ${jQuery.fn.jquery} loaded.` : ' is not loaded.'));
Вы должны фактически обернуть это в блок try / catch для IE:
источник
typeof jQuery != 'undefined'
? Это правда для каждого IE или только для старых?В одной строке и минимум нажатий клавиш (упс!):
источник
Перейдите в инструмент разработчика> консоль и введите одну из следующих команд
jQuery.fn.jquery
console.log(jQuery().jquery);
источник
Как описано в блоге Template monster , эти сценарии ниже приведут вам версию jquery на сайте, который вы просматриваете сейчас.
источник
.....
источник
$
.$
? Это не уникально для jQuery.jQuery
не загружен? (БроситReferenceError
). Приведенный выше ответ является правильным, и поэтому люди отказываются голосовать за ваш ответ.