[JavaScript] jQuery v1.10.x への移行で注意すべき点

jQueryに依存するスクリプトに於いて以下のようなロジックでjQueryのバージョンチェックを行い処理分岐を行なっているものが多く見受けられるのですが、このようなロジックはjQuery 1.10.xとの組み合わせで期待通りの動きをしてくれなくなるので注意が必要です。

// support: jQuery 1.8+
if (parseFloat($.fn.jquery) >= 1.8) {
// (本処理)
}

理由は簡単。$.fn.jqueryで取得した「1.10.x」をparseFloatで小数値変換すると小数値としてあり得ない2つめのドット(.)以下が削られたうえで小数部末尾の0も省略されるため「1.10」ではなく「1.1」となってしまうため。


これに代わる手段はイロありますが、バージョン毎のメソッドの実装有無を活用した判断方法が一番スマート。例えばv1.8以上の判断を行うにはaddBackメソッドを利用。

// support: jQuery 1.8+
if ($.fn.addBack) {
// (本処理)
} else {
throw "The jQuery version that was loaded is too old. This Script requires jQuery 1.8+";
}

addBackを実装しているv1.8以上は本処理に入り、実装してないv1.8未満はthrowでフォローするなどして対応します。

// support: jQuery 1.4+
if ($.fn.clearQueue) {
// (本処理)
} else {
throw "The jQuery version that was loaded is too old. This Script requires jQuery 1.4+";
}

v1.4以上かどうかの判断にはclearQueueが使用できます。

    このサイトは reCAPTCHA によって保護されており、Google のプライバシーポリシー および 利用規約 に適用されます。

    reCaptcha の認証期間が終了しました。ページを再読み込みしてください。

    頂戴したコメントは管理者に承認されるまで表示されません。また、メールアドレスが公開されることはありません。
    このサイトはreCAPTCHAによって保護されており、Googleのプライバシーポリシー利用規約が適用されます。