久しぶり?なJavaScriptについての私用備忘録。
今回は、HTMLのaタグをクリックした際に、画面遷移をさせない方法についてです。
例えば、下記のように指定していた場合に使えます。
<a href="#">リンク1です</a>
普通に実行すると、URLの最後に # が付いてしまいますが、画面遷移を無効にすることで、URLの最後に # が付くことを防ぐことができます。
で、この実装方法ですが、preventDefault というメソッドを使います。
具体例は下記のとおり。
// 本サイトのトップページへのリンクです <a href="https://cpoint-lab.co.jp/" id="link">https://cpoint-lab.co.jp/</a>
// リンクの要素を取得 var element = document.getElementById("link"); element.addEventListener("click", function(e){ // リンクがクリックされたときの処理 e.preventDefault(); // 画面遷移を無効化 }, false);
コード自体は、実にシンプルです。
リンクがクリックされたときに、デフォルトのイベント=画面が遷移するのを抑止しています。
なお、jQuery の場合は、下記のように記述します。
$("#link").on('click', function(e){ e.preventDefault(); // 画面遷移を無効化 });
クリックを検知している箇所の記述が違うだけですが、こんな感じ。
他にも、stopPropagation というメソッドや return false で遷移を無効化している例もありましたが、個人的にはこれが一番わかりやすかったので、こちらを使用しています。
以上、aタグでの画面遷移をキャンセルする方法でした。
なお、フォームの送信をキャンセルするのにも使えます。
画面遷移は使用頻度低そうですが、フォームの送信キャンセルは ajax とかでよく使われるので、覚えておいて損はないはず。
似たようなことでお困りの方は、是非ご参考にしていただければ幸いです。