2013-09-26 7 views
4

Я пытаюсь проверить, если текущая версия jquery больше 1,8.3, но parseInt($.fn.jquery) выводит только одну цифру.Проверьте, не превышает ли версия JQuery 1,8?

+2

Вобще '$ .fn.jquery>«1.8.3'' – adeneo

+0

$ .fn.jquery> '1.8.3' ложные –

+0

http://maymay.net/blog/2008/06/15/ Смешно-просто-javascript-version-string-to-object-parser/ – adeneo

ответ

3

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

var vernums = $.fn.jquery.split('.'); 
if (parseInt(vernums[0]) > 0 && parseInt(vernums[1]) >= 8 && parseInt(vernums[2]) > 3) { 
    // Do stuff here 
} 
+0

Спасибо, извините, скопировал неправильную строку с консоли. –

+0

Вы ссылаетесь на parseInt (vernums [0])> 0? Если это так, я думаю, вы хотите> 0 (т. Е. 1, 2, ...). > 1 будет проверяться только на 2,8 и выше. –

+0

'0' должно быть' 1' SO не позволит мне редактировать 1 символ также, как бы вы сравнили, если версия имеет только 2 цифры '1.4' – meda

1

Вот упрощенным «один вкладыш» подход. Я подушечка из цифр с ведущими нулями .:

if(jQuery.fn.jquery.split('.') 
    .map(function(i){return('0'+i).slice(-2)}) 
    .join('.') > '01.08.03') 
{ 
    alert('yes'); 
} 
else 
{ 
    alert('no'); 
} 
1

Я использую это пропущено:

/** 
* Checks if versionA is bigger, lower or equal versionB 
* It checks only pattern like 1.8.2 or 1.11.0 
* Major version, Minor version, patch release 
* @param strVersionA a version to compare 
* @param strVersionB the other version to compare 
* @returns {*} 1 if versionA is bigger than versionB, -1 if versionA is lower than versionB and 0 if both versions are equal 
* false if nothing worked 
*/ 
function checkVersion(strVersionA, strVersionB){ 
    var arrVersionA = strVersionA.split('.'); 
    var arrVersionB = strVersionB.split('.'); 
    var intVersionA = (100000000 * parseInt(arrVersionA[0])) + (1000000 * parseInt(arrVersionA[1])) + (10000 * parseInt(arrVersionA[2])); 
    var intVersionB = (100000000 * parseInt(arrVersionB[0])) + (1000000 * parseInt(arrVersionB[1])) + (10000 * parseInt(arrVersionB[2])); 

    if (intVersionA > intVersionB) { 
     return 1; 
    }else if(intVersionA < intVersionB){ 
     return -1; 
    }else{ 
     return 0; 
    } 
    return false; 
} 

Таким образом, вы можете использовать его как это:

var blnIsNewJQuery = checkVersion($.fn.jquery,"1.8.3")>0?true:false; 

Вы должны держать также смотреть на версии за 9.99.99. Код также расширяется для шаблонов, таких как 11.11.11.11. Также стоит проверить, допустимы ли значения массива valid-integer. Вы можете пойти дальше, чтобы проверить также нотацию, как: 11.11.11.RC1

Надеется, что это помогает, извините за моим английский

2

немного короче «один вкладыш» тест, действительно до версии 9.99.99:

$.fn.jquery.replace(/\.(\d)/g,".0$1").replace(/\.0(\d{2})/g,".$1") > "1.08.03"