【JavaScript】parentNodeの連発やめて、closestを使おう!
2020年1月20日
皆さんこんにちは、末ちゃんです。
年も明けてビッグニュース!ついに、Windows7のサポートが終了しました!
※ ただし企業向けに有償で延長サポートがあります。
ウェブ開発においてWindows7のIE11のサポートの手間から解放される日も近いでしょう。
同時にChromium搭載のEdgeが正式リリースされました!
じきWindows Update経由で皆さんの手元に届きますので、今しばらくお待ちください。
すぐ使いたい人は以下からどうぞ!
https://www.microsoft.com/en-us/edge
parentNode連発をやめよう
さて新年一発目のネタは、JavaScriptネタです。
あるあるネタで、とある要素内の子要素であるボタンをクリックしたら、その要素を非表示にするといったシチュエーションでこんなコードみたことありませんか・・・?
<div class="parent"> <div class="inner"> <div class="body"> <button class="button">ボタン</button> </div> </div> </div>
const element = document.querySelector('.button'); element.addEventListener('click', (e) => { e.target.parentNode.parentNode.parentNode.classList.add('is-hide'); });
一目見るだけで訳がわかりません。
このような運用でカバー的なコードを書かずとも、便利な関数がありますのでそちらを使いましょう。
const element = document.querySelector('.button'); element.addEventListener('click', (e) => { e.target.closest('.parent').classList.add('is-hide'); });
はい、一目見て何をしたいかがよくわかるコードになりました。
e.target
の祖父要素である .parent
を探していることがよくわかりますね。
ただし、IEは対応していないのでpolyfillを使用する必要があります。
まとめ
コードを書くだけにかかわらず、誰が見ても分かりやすいものを書くことは大切です。
仕事をしていると時間に追われていい加減になりがちですが、あとのことを考える余裕を持つのを今年の目標にしていきます!