Улучшить эту функцию, которая сравнивает версий jQuery


Пожалуйста, помогите улучшить эту функцию, которая сравнивает версии jQuery в настоящее время доступны (или нет) с одним обязательным.

function(need) {
    if (typeof(jQuery) != 'undefined') {
        if (!need) return true;
        var re = /(\d+)\.(\d+)\.(\d+)/,
            cur = re.exec(jQuery.fn.jquery),
            need = re.exec(need);
        return (need[1] <= cur[1] && need[2] <= cur[2] && need[3] <= cur[3]);
    } else return false;
}


1855
4
задан 10 мая 2011 в 05:05 Источник Поделиться
Комментарии
3 ответа

Извините, но этот код полностью разбита.


  • Она не работает, если какая-либо версия содержит только два числа, таких, как нынешний "1.6".

  • Он использует сравнение строк вместо сравнения целых чисел, так что он вернется , правда если вы "нужны" (теоретический) вариант "1.4.10", но только "1.4.2" включен, потому что "10" < "2" - это правда.

  • Не перестаньте сравнивать версии, если основной номер-это уже больше. Например, он будет возвращать значение false , если "1.4.2" "необходима", но "1.5.1" включен, потому что "2" > "1"

  • И, наконец, вы должны иметь в виду, что "новее" не всегда лучше. Например, новая версия 1.6 изменения как .М() работает, и скрипты, которые используют старые функции .буква attr() может сломаться.

5
ответ дан 10 мая 2011 в 01:05 Источник Поделиться

Я просто сделал плагин.

$.versioncompare(version1[, version2 = jQuery.fn.jquery])

https://github.com/zuzara/jQuery-version-compare-plugin

1
ответ дан 27 октября 2011 в 05:10 Источник Поделиться

Я чувствую, что я что-то упускаю, но я получил его вниз на одну строку за сжатую версию, или несколько строк для подробного explination.

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

(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");
}

-1
ответ дан 26 апреля 2012 в 11:04 Источник Поделиться