在编写新的jQuery插件时,有一种直接的方法可以检查当前版本的jQuery是否高于某个数字?否则显示警告或记录错误。
做一些像这样的事情会很好:
jQuery.version >= 1.2.6
以某种形式。
答案 0 :(得分:12)
这是我用来确保用户至少使用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.
}
答案 1 :(得分:10)
试试这个:
>>> jQuery.fn.jquery;
"1.3.2"
答案 2 :(得分:3)
请在此处查看我的回答:jQuery Version Compatibility Detection
答案 3 :(得分:3)
我觉得所有的解决方案都相当笨重,我的下方遗失了什么?
压缩版:
(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");
}
答案 4 :(得分:2)
$().jquery;
或
jQuery.fn.jquery;
答案 5 :(得分:1)
将版本作为整数数组传递,例如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("."));
}
答案 6 :(得分:1)
怎么样:
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。
答案 7 :(得分:1)
如果它足以检查次要版本,而不是补丁版本,您可以执行类似
的操作
parseFloat(jQuery.fn.jquery) >= 1.9
可以稍微更改一下以检查&gt; = 1.4.3:
parseFloat(jQuery.fn.jquery) > 1.4 ||
parseFloat(jQuery.fn.jQuery) == 1.4 && parseFloat(jQuery.fn.jQuery.slice(2)) >= 4.3
答案 8 :(得分:0)
在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”之类的东西可能有效。
答案 9 :(得分:0)
将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错误函数来防止执行时向开发人员解释。
答案 10 :(得分:0)
因为没有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
}
答案 11 :(得分:0)
唯一正确的答案是使用版本比较功能。
这里的很多答案都做出了很糟糕的假设,即使是一些批判性思维也可能表明不正确,比如假设每个子版本都是一位数,或者jQuery永远不会达到版本2.我不想在这个答案中重新哈希它们,但那些时期有意义:它意味着“我左边的任何东西都是一个比我右边更重要的数字。”因此,正确的解决方案总是检查最左边的版本号组件,如果第一对完全匹配,仅检查下一个组件,依此类推。
jQuery的版本号在$.fn.jquery
中可用,如此处的许多其他答案中所述。它是一个字符串,你的版本比较函数应该是字符串。
Here is a port of PHP’s version comparison function to JS。注意它对于jQuery来说可能有些过分,特别是如果你假设你只会看到数字并且不会处理候选版本等。但它将是可靠且面向未来的。
答案 12 :(得分:0)
而不是像我在上面的一个答案中看到的那样使用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');
}
答案 13 :(得分:0)
那样的东西?
它检查是否加载了jQuery,如果是,则检查版本。 此方法也适用于2位数版本号(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');
}
答案 14 :(得分:0)
我很惊讶没人提供这个解决方案:
//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;
}