if语句依赖于jQuery()。jquery

时间:2012-10-04 02:40:59

标签: javascript jquery

根据运行的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块中给出错误。欢呼声。

2 个答案:

答案 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,请查看我对此问题的回答。

script reference causes conflict