jQueryでアンカーリンクを反応させたくない場合はpreventDefault();をつけると良い

jQuery
スポンサーリンク

jQueryで、href内にjQuery処理をするためのトリガーとして#付きアンカータグをつけることがあります。html的にはアンカーとして見ているためリンクとして反応してしまい、ページの上へスクロールしてしまったりすることがあります。
それを解決する方法があったのでメモ。

確認環境

  • jQuery 1.7.2

コード

まずはコードをさらっと紹介します。

“`<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<title>jQueryでアンカーリンクを反応させたくない場合はpreventDefault();をつけると良いみたいのテスト</title>
<link rel="stylesheet" type="text/css" href="style.css" media="all" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
</head>
<body>

<!– ここの#付きアンカータグを反応させたくない –>
<ul class="tabmenu">
<li><a href="#tab01">タブ01</a></li>
<li><a href="#tab02">タブ02</a></li>
<li><a href="#tab03">タブ03</a></li>
</ul>

<script type="text/javascript">
//タブ切り替え
$('.tabmenu li a').on('click',function(e){
e.preventDefault();
//何か処理…
});
</script>
</body>
</html>“`

functionとして処理するものに対してe(eventの略)を指定し、e.preventDefault();と記述することで、リンクとしての処理を抑えることができるようです。