2

実行中の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不要な場合でも、ブロック内のコードに対してページでエラーが発生します。乾杯。

4

2 に答える 2

3

エラーが jQuery バージョン 1.6 で追加された に関連付けられて.prop()いる場合は、そのメソッドが使用可能かどうかを確認し、それに応じて対処する必要があります。

if (jQuery().prop) {
    // .prop() methods exists
}

または単に:

if (jQuery.fn.prop) {
    // .prop() methods exists
}

参考までに、特定の jQuery 機能が追加されたバージョンはこちらで確認できます


上記のように、必要な特定の方法があるかどうかを確認することをお勧めします。ただし、バージョンをチェックする必要があると思われる場合は、等しいかどうかではなく、より大きいかどうかをチェックする必要があります。ご存知のよう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
}
于 2012-10-04T02:50:08.477 に答える
1

jQueryのバージョンに依存するコードを書かないでください。

コードの大部分は同じである必要があります。いくつかの特別な部分については、jQuery のバージョンを使用する代わりに、プロパティが存在するかどうかをテストします。

例:

if ('prop' in $jQueryObject) {
  // do something
} else {
  // do in other way
}

同じページで異なるバージョンの jQuery を使用するには、この質問に対する私の回答を確認してください。

スクリプト参照が競合を引き起こす

于 2012-10-04T02:50:23.320 に答える