Подтвердить что ты не робот

Версия проверки плагина jQuery

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

Было бы неплохо сделать что-то вроде:

jQuery.version >= 1.2.6

в той или иной форме.

4b9b3361

Ответ 1

Вот проверка, которую я использовал, чтобы убедиться, что пользователь использует по крайней мере v. 1.3.2 jQuery.

if (/1\.(0|1|2|3)\.(0|1)/.test($.fn.jquery) 
                    || /^1.1/.test($.fn.jquery) 
                    || /^1.2/.test($.fn.jquery)) 
{
    //Tell user they need to upgrade.
}

Ответ 2

Попробуйте следующее:

>>> jQuery.fn.jquery;
"1.3.2"

Ответ 4

Я чувствую, что все решения довольно громоздки, моя минута что-то отсутствует?

Сжатая версия:

(parseInt(jQuery.fn.jquery.split('.').join('')) > 140) ? alert("Running jquery greater than 1.4.0") : alert("current jquery version is 1.4.0 or less");

Длинная версия для ясности:

// get version as a string and get rid of the periods. 
version = jQuery.fn.jquery.split('.').join('');

// Make into one long number for easy comparison.  Example, 171, or 141.
version = parseInt(version);
if(version > 141){
    alert("We're using a version greater than 1.4.1");
}else{
    alert("jQuery version is 1.4.1 or lower");
}

Ответ 5

$().jquery;

или

jQuery.fn.jquery;

Ответ 6

Передайте версию как массив целых чисел, например jQmin([1,4,2]), чтобы проверить, равна ли текущая версия или выше v1.4.2.

function jQmin(min) {
    var i, cur, 
        cver = $.fn.jquery, 
        c = cver.split(".");
    while (min.length < c.length) min.push(0);

    for (i = 0; i < min.length; i++) {
        cur = parseInt(c[i]);
        if (cur > min[i]) return true;
        if (cur < min[i]) return false;
    }
    return (cver === min.join("."));
}

Ответ 7

Как насчет:

function minVersion(version) {
var $vrs = window.jQuery.fn.jquery.split('.'),
min  = version.split('.'),
prevs=[];

for (var i=0, len=$vrs.length; i<len; i++) {
    console.log($vrs[i], min[i], prevs[i-1]);
    if (min[i] && $vrs[i] < min[i]) {
        if (!prevs[i-1] || prevs[i-1] == 0)
            return false;
    } else {
        if ($vrs[i] > min[i])
            prevs[i] = 1;
        else
            prevs[i] = 0;
    }
}
return true;

}

Я написал этот код на моей разветвленной строчке: https://gist.github.com/budiadiono/7954617, оригинальный код, написанный dshaw: https://gist.github.com/dshaw/652870.

Ответ 8

Если достаточно проверить небольшую версию, а не версию патча, вы можете сделать что-то вроде

parseFloat(jQuery.fn.jquery) >= 1.9

Это можно немного изменить, чтобы проверить >= 1.4.3: parseFloat(jQuery.fn.jquery) > 1.4 || parseFloat(jQuery.fn.jQuery) == 1.4 && parseFloat(jQuery.fn.jQuery.slice(2)) >= 4.3

Ответ 9

Обнаружено это в jquery.1.3.2 source:

 jQuery.fn = jQuery.prototype = {
    init: function( selector, context ) {
    .....
    // The current version of jQuery being used
    jquery: "1.3.2",

Я не проверял, но что-то вроде "$.fn.jQuery" может работать.

Ответ 10

Разделите строку версии jQuery на числа, чтобы проверить их значение. Некоторые строки версий не содержат приращения, поэтому сделайте их 0.

var
  version = $.fn.jquery.split('.'),
  versionMinor = parseFloat(version[1]),
  versionIncrement = parseFloat(version[2] || '0');

if (versionMinor === 4 && versionIncrement < 3 || versionMinor < 4) {
  $.error('Requires jQuery 1.4.3 or higher to support ...');
}

Используйте функцию ошибки jQuery, чтобы предотвратить выполнение с объяснением разработчику.

Ответ 11

так как нет версии jquery, в которой нам больше одной цифры, вы можете безопасно использовать

if ([$.fn.jquery,"1.6"].sort()[0] == "1.6")
{
  // jquery version greater or same as 1.6
}
else
{
  // jquery version lower than 1.6
}

Ответ 12

Единственный правильный ответ - использовать функцию сравнения версий.

Многие ответы здесь дают очень плохие предположения, что даже небольшое критическое мышление может показаться неправильным, например, предполагая, что каждая под-версия является одной цифрой или что jQuery никогда не достигнет версии 2. Я не хочу повторите их в этом ответе, но эти периоды имеют смысл: это означает, что "все, что слева от меня, - это число, которое имеет большее значение, чем все, что справа от меня". И поэтому правильное решение всегда проверяет самый последний номер номера версии, а только проверяет следующий компонент, если первая пара точно соответствует, и т.д.

Номер версии jQuerys доступен в $.fn.jquery, как указано во многих других ответах здесь. Это строка, и ваша функция сравнения версий должна ожидать строки.

Вот порт функции сравнения версий PHP для JS. Обратите внимание, что это, вероятно, избыток для jQuery, особенно если вы предполагаете, что будете видеть только числа и не будете иметь дело с кандидатами на выпуск и т.п. Но он будет надежным и перспективным.

Ответ 13

Вместо использования parseInt, как я увидел в одном из ответов выше, я предложил бы использовать parseFloat, как указано ниже

  var _jQueryVer = parseFloat('.'+$().jquery.replace(/\./g, ''));
  /* Here the value of _jQueryVer would be 0.1012 if the jQuery version is 1.0.12
     which in case of parseInt would be 1012 which is higher than 
     140 (if jQuery version is 1.4.0) 
  */
  if(_jQueryVer < 0.130) { 
    alert('Please upgrade jQuery to version 1.3.0 or higher');
  }

Ответ 14

Что-то вроде этого?

Он проверяет, загружен ли jQuery, и если это так, проверяет версию. Этот метод работает правильно и для двухзначных номеров версий (1.10.28), и при необходимости вы можете продлить его на 3 цифры, если вы замените 100 номеров на 1000...

function checkJQueryMinVersion(need) {
    var v1 = need.split('.');
    var v1_num = 0;
    var v2 = jQuery.fn.jquery.split('.');
    var v2_num = 0;

    if(v1[0] != undefined) {
        v1_num += 100*100*parseInt(v1[0]);
    }
    if(v1[1] != undefined) {
        v1_num += 100*parseInt(v1[1]);
    }
    if(v1[2] != undefined) {
        v1_num += parseInt(v1[2]);
    }

    if(v2[0] != undefined) {
        v2_num += 100*100*parseInt(v2[0]);
    }
    if(v2[1] != undefined) {
        v2_num += 100*parseInt(v2[1]);
    }
    if(v2[2] != undefined) {
        v2_num += parseInt(v2[2]);
    }
    return (v1_num <= v2_num);
}
if(!window.jQuery || !checkJQueryMinVersion('1.10.28')) {
    alert('Loading //ajax.googleapis.com/ajax/libs/jquery/1.10.28/jquery.min.js');
    var script = document.createElement('script');script.type = 'text/javascript';
    script.src = '//ajax.googleapis.com/ajax/libs/jquery/1.10.28/jquery.min.js';
    document.getElementsByTagName('head')[0].appendChild(script);
}
else {
    alert('Jquery version OK');
}

Ответ 15

Я удивлен, что никто не дал это решение:

//Returns < 0 if version1 is less than version2; > 0 if version1 is greater than version2, and 0 if they are equal.
var compareVersions = function (version1, version2){

    if(version1 == version2)return 0;

    var version1Parts = version1.split('.');
    var numVersion1Parts = version1Parts.length; 

    var version2Parts = version2.split('.');
    var numVersion2Parts = version2Parts.length; 


    for(var i = 0; i < numVersion1Parts && i < numVersion2Parts; i++){
        var version1Part = parseInt(version1Parts[i], 10);
        var version2Part = parseInt(version2Parts[i], 10);
        if(version1Part > version2Part){
            return 1;
        }
        else if(version1Part < version2Part){
            return -1;
        }
    }

    return numVersion1Parts < numVersion2Parts ? -1 : 1;
}