jQueryからの脱却!よくある処理をネイティブJSで書き換える

近年では、モダンブラウザの進化により、jQueryを使わずとも多くのDOM操作が簡単に実現できるようになりました。コードの軽量化や依存性の排除、可読性の向上を目指して、jQueryからネイティブJavaScript(Vanilla JS)への書き換えを検討してみませんか?この記事では、現場でよく使われるjQueryの処理をネイティブJSで書き換える方法を紹介します。
目次
要素の取得とイベントの登録
jQueryの場合:
$(".btn").on("click", function () {
console.log("クリックされました");
});
ネイティブJavaScript:
document.querySelectorAll(".btn").forEach(function (el) {
el.addEventListener("click", function () {
console.log("クリックされました");
});
});
.querySelectorAll()
で複数要素を取得し、forEach
でループ。イベント登録はaddEventListener
を使います。
将来追加される要素へのイベント付与(イベントデリゲーション)
jQueryの場合:
$(document).on("click", ".btn", function () {
console.log("動的に追加された要素がクリックされました");
});
ネイティブJavaScript:
document.addEventListener("click", function (event) {
if (event.target.matches(".btn")) {
console.log("動的に追加された要素がクリックされました");
}
});
動的に追加された要素にもイベントを適用するには、親要素に対してイベントを登録し、event.target
のマッチを確認する方法(イベントデリゲーション)を使います。
クラスの付け外し
jQueryの場合:
$(".box").addClass("active");
$(".box").removeClass("active");
$(".box").toggleClass("active");
ネイティブJavaScript:
document.querySelector(".box").classList.add("active");
document.querySelector(".box").classList.remove("active");
document.querySelector(".box").classList.toggle("active");
classList
を使えば、クラス操作もシンプルに書けます。
Ajaxリクエストの送信
jQueryの場合:
$.ajax({
url: "/api/data",
method: "GET",
success: function (data) {
console.log(data);
}
});
ネイティブJavaScript(fetch API):
fetch("/api/data")
.then(response => response.json())
.then(data => {
console.log(data);
})
.catch(error => {
console.error("エラー:", error);
});
fetch
はPromiseベースで、非同期処理をスマートに扱えます。
DOMの読み込み完了後の処理
jQueryの場合:
$(function () {
console.log("DOMの準備ができました");
});
ネイティブJavaScript:
document.addEventListener("DOMContentLoaded", function () {
console.log("DOMの準備ができました");
});
DOMContentLoaded
イベントを使えば、同様の処理が可能です。
フェードイン・フェードアウト
アニメーションはjQueryの強みですが、CSSと併用すればネイティブでも対応可能です。
jQueryの場合:
$(".box").fadeIn();
$(".box").fadeOut();
ネイティブJavaScript + CSS:
.fade {
opacity: 0;
transition: opacity 0.5s;
}
.fade.show {
opacity: 1;
}
const box = document.querySelector(".box");
box.classList.add("fade");
box.classList.add("show");
アニメーションはclassList
の切り替えとCSSトランジションで表現します。
まとめ:jQueryから脱却して軽量・モダンなコードへ
jQueryの記述は簡潔でわかりやすい反面、最近のブラウザではネイティブJavaScriptで同じことができるケースがほとんどです。プロジェクトによってはライブラリの読み込みすら不要になり、ページのパフォーマンス改善にもつながります。まずは身近な処理からネイティブに書き換えて、jQueryに頼らない開発スタイルを目指してみましょう。

Contact
ウェブサイトの制作や運用に関わる
お悩みやご相談
お気軽にお問い合わせ下さい
ウェブサイトと一口に言っても、企業サイトやECサイト、ブログ、SNSなど、その“カタチ”は目的に応じてさまざまであり、構築方法や使用する技術も大きく異なります。株式会社コナックスでは、お客様のご要望やブランドの個性を丁寧に汲み取り、最適なウェブサイトの“カタチ”をご提案いたします。
デザイン、ユーザビリティ、SEO対策はもちろん、コンテンツ制作やマーケティング戦略に至るまで、あらゆるフェーズでお客様のビジネスに寄り添い、成果につながるウェブサイトづくりをサポートいたします。私たちは、ウェブサイトの公開をゴールではなくスタートと捉え、お客様のビジネスの成功に向けて共に伴走してまいります。