根据运行的jquery版本,运行函数的最佳方法是什么? 现在我有:
var jqVersion = jQuery().jquery;
if (jqVersion == '1.4.2') {
//jQuery 1.4.2 specific script here.
} else {
//jQuery that works on rest of the site here
}
这在Firefox中运行良好,但在Chrome和IE中,即使符合条件且不需要else
,页面也会在else
块中给出错误。欢呼声。
答案 0 :(得分:3)
如果您的错误与.prop()
相关联,那是在jQuery 1.6版中添加的,那么您应该检查该方法是否可用并采取相应的行动。
if (jQuery().prop) {
// .prop() methods exists
}
甚至只是:
if (jQuery.fn.prop) {
// .prop() methods exists
}
仅供参考,您可以看到添加了任何给定jQuery功能的版本here。
我的建议是检查您想要的具体方法是否如上所述。但是,如果您觉得必须检查版本,那么您需要检查大于,而不是为了平等。如您所知,jQuery().jQuery
包含版本字符串。如果要检查大于某个数字的版本,则需要将该字符串解析为数字并与之进行比较。这是一个功能:
jQuery.getVersionObject = function() {
var versionStr = jQuery().jQuery;
var matches = versionStr.match(/(\d+)\.(\d+)\.(\d+)/);
var num = (matches[1] * 1000 * 1000) + (matches[2] * 1000) + (matches[3]);
return ({major: matches[1], minor: matches[2], rev: matches[3]; num: num})
}
jQuery.checkMinVersion(major, minor, rev) {
minor = minor || 0;
rev = rev || 0;
var num = (major * 1000 * 1000) + (minor * 1000) + rev;
var version = jQuery.getVersionObject();
return(version.num >= num);
}
使用示例:
if (jQuery.checkMinVersion(1, 6, 0)) {
// jQuery version is 1.6.0 or higher
}
答案 1 :(得分:1)
不要编写代码取决于jQuery版本。
代码的大部分应该是相同的,对于某些特殊部分,测试属性是否存在而不是使用jQuery版本。
<强> 实施例 强>
if ('prop' in $jQueryObject) {
// do something
} else {
// do in other way
}
要在同一页面中使用不同版本的jQuery,请查看我对此问题的回答。