JavaScriptでリンクのクリックを無効化する方法。
<a href="javascript:void(0);" id="jstest">ページトップへ戻る</a> <script> document.getElementById("jstest").addEventListener("click", function(){ //ここに処理を書く }, false); </script>ではjavascript:void(0)を使いたくない場合はどうすれば良いのか。
<a href="#" id="jstest">ページトップへ戻る</a> <script> document.getElementById("jstest").addEventListener("click", function(){ //以下に処理を書く }, false); </script>一応<a href="#test">など存在しない飛び先(id)を指定すればリンク本来の動作は発生せずJavaScriptだけが実行されるが、これもJavaScriptを無効にしている人は何も起きない。
<a href="#" id="jstest">ページトップへ戻る</a> <script> document.getElementById("jstest").addEventListener("click", function(e){ e.preventDefault();//イベントをキャンセル //以下に処理を書く }, false); </script>function(e)と書いてイベントを拾い、e.preventDefault();でイベントをキャンセルする。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> <a href="#" id="jstest">ページトップへ戻る</a> <script> //リンククリックの既定動作をキャンセル $(function(){ $("#jstest").click(function(){ return false; }); }); document.getElementById("jstest").addEventListener("click", function(){ //以下に処理を書く }, false); </script>ちなみにjQueryでページ上部へスクロールさせる場合はこういう処理を書く必要がない。
<a href="#" id="jstest">ページトップへ戻る</a> <script> document.getElementById("jstest").addEventListener("click", function(e){ var jstest = document.getElementById("jstest"); jstest.removeAttribute("href");//href属性をなくす //以下に処理を書く //以上処理 jstest.setAttribute("href", "#");//処理が終わったらhref属性を元に戻す }, false); </script>ただし、href属性を消すとアンカーが消えるので、処理が終わったらsetAttribute()で元に戻す必要がある。
<a style="pointer-events:none;" href="#" id="jstest">ページトップへ戻る</a>