43
44

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

「現在のページへのリンクをハイライトさせる」がjqueryでさくっとできてビックリした話

Posted at

やりたかったこと

メニューリンクによくある、いま自分のいるページ(現在地)へのリンクの文字色やら背景色やらが変わる、例のあれ。

某phpフレームワークでできているサイトでこれを作りたくて、if文なりなんなり書くのかなあ、と考えていたら、jquery でなんともあっさりできました。

コード

jquery は読み込んだうえで。

<script>
	 var url = window.location;
        $('.nav a[href="'+url+'"]').addClass('active');
</script>

</head>
<ul class="nav">
	<li><a href="http://www.test.com/test.html">test</a><li>
	<li><a href="http://www.test.com/test2.html">test</a><li>
</ul>
.active{color:red;}

test2.html を訪れている時は、test2のリンクテキストが赤字になる。

注意点

  • クラス名の指定間違えないように
  • リンクはhttpからのフルパスで書くように

とはいえ、リンクをフルパス以外で書きたいときもあるのですよ。
そんなときは、window.locationのプロパティを変えればよい。

<script>
	 var url = window.location.pathname;
        $('.nav a[href="'+url+'"]').addClass('active');
</script>

</head>
<ul class="nav">
	<li><a href="/test.html">test</a><li>
	<li><a href="/test2.html">test</a><li>
</ul>

まとめ

普段PHPerな筆者。
同じことをPHPだけでやろうとしたら、出来なくはないけど非常にぐっちゃぐちゃになって面倒なコードになる。
困った時のjs, jquery 頼みを肝に銘じよう。

#参考
https://developer.mozilla.org/ja/docs/Web/API/window.location

43
44
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
43
44

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?