概要

レガシーなコードを受け継いできたプロジェクトに散見される jQuery.noConflict 。今現在これを使用するメリットは全くなく、もはやデメリットすらあるこの1行を駆逐していきたいと思っている。(jQuery本体の不要論は置いといて)

使われていた理由

jQueryは他ライブラリ(主にprototype.js)と競合する。$が競合してしまうのだが、これを回避する為に使われるのがjQuery.noConflictだった。jQuery自身の$を使用する事を回避し競合を避けていた。

prototype.jsやjQueryが使われ始めた当初、併用されるのが珍しくなかった為、こういった対応が必要であったのだが、それから prototype.js が完全に死に使われなくなった事でjQuery.noConflictは不要となっていった。

使われ方

色々と使い方はあるが、だいたい以下のような形で使われている。

jQuery.noConflict();

(function($) {
    console.log('Hello');
})(jQuery);

一度、変数に入れて使われていたりもする。

var $j = jQuery.noConflict();
$j('#hoge').fadeIn();

やめる

先述の通り、 prototype.js を使っていない($に依存したライブラリを使用していない)場合は、完全にこのjQuery.noConflict();は不要である。
オマジナイ的に使用しているのであれば消したほうが良い。少量ながらコード量は減るし、DevToolsから$を使ったjQueryの実行も出来るようになる。

方法

対応として基本的には、jQuery.noConflict();の1行を消すだけで問題ないが、別の変数に格納している場合は、加えて変数の置換作業が必要となる。