Я пытаюсь проверить, если текущая версия jquery больше 1,8.3, но parseInt($.fn.jquery)
выводит только одну цифру.Проверьте, не превышает ли версия JQuery 1,8?
ответ
Не уверен, что это самый эффективный, но, кажется, работает ... Возьмите строку версии, разделить его на лексемы и проверить каждый маркер, как показано ниже
var vernums = $.fn.jquery.split('.');
if (parseInt(vernums[0]) > 0 && parseInt(vernums[1]) >= 8 && parseInt(vernums[2]) > 3) {
// Do stuff here
}
Спасибо, извините, скопировал неправильную строку с консоли. –
Вы ссылаетесь на parseInt (vernums [0])> 0? Если это так, я думаю, вы хотите> 0 (т. Е. 1, 2, ...). > 1 будет проверяться только на 2,8 и выше. –
'0' должно быть' 1' SO не позволит мне редактировать 1 символ также, как бы вы сравнили, если версия имеет только 2 цифры '1.4' – meda
Вот упрощенным «один вкладыш» подход. Я подушечка из цифр с ведущими нулями .:
if(jQuery.fn.jquery.split('.')
.map(function(i){return('0'+i).slice(-2)})
.join('.') > '01.08.03')
{
alert('yes');
}
else
{
alert('no');
}
Я использую это пропущено:
/**
* 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
Надеется, что это помогает, извините за моим английский
немного короче «один вкладыш» тест, действительно до версии 9.99.99:
$.fn.jquery.replace(/\.(\d)/g,".0$1").replace(/\.0(\d{2})/g,".$1") > "1.08.03"
Вобще '$ .fn.jquery>«1.8.3'' – adeneo
$ .fn.jquery> '1.8.3' ложные –
http://maymay.net/blog/2008/06/15/ Смешно-просто-javascript-version-string-to-object-parser/ – adeneo