概要
レガシーなコードを受け継いできたプロジェクトに散見される 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 行を消すだけで問題ないが、別の変数に格納している場合は、加えて変数の置換作業が必要となる。