質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.30%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

897閲覧

ページ内リンクがある共通メニューに、URLから自分の現在地を判定しクラスを付与する方法

zun30

総合スコア3

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2022/02/11 00:44

編集2022/02/11 01:38

共通メニューにurlを判定しactiveというクラスを付与したいです。
通常のメニューならjsが動いてclass="active"を付与できたのですが、ページ内リンクを設定したところ#が入ったことによりクラスを付与できなくなってしまいました。
ページ内リンク付きの共通メニューをクリックすると以下のurlに遷移します。
http://○○○○.com/page04/#part01
上手く自分の居場所を反映しクラスactiveを付与することは出来ますでしょうか。

お助けいただけると幸いです。

HTML

1<nav> 2 <ul> 3 <li><a href="/page01">PAGE01</a></li> 4 <li><a href="/page02">PAGE02</a></li> 5 <li><a href="/page04#part01">PART01</a></li> 6 <li><a href="/page04#part02">PART02</a></li> 7 <li><a href="/page04#part03">PART03</a></li> 8 </ul> 9</nav>

jQuery

1var activeurl = location.pathname.split('/')[1]; 2$(document).ready(function() { 3 $('nav li a').each(function(){ 4 var array = $(this).attr('href').replace('/' , ''); 5 if( activeurl.search(array) !== -1 ) { 6 $(this).addClass('active'); 7 } 8 }); 9});

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Lhankor_Mhy

2022/02/12 05:02

/page04 にいる時は、PART01、PART02、PART03 に class="active" をつける、ということでいいですか?
zun30

2022/02/14 01:20

はい。/page04は内部でPART01、PART02、PART03の3つの要素が入っていて <li><a href="/page04#part01">PART01</a></li>をタップしたら <li><a href="/page04#part01" class="active">PART01</a></li> ↑このような状態にしたいです。
Lhankor_Mhy

2022/02/14 04:43

つまり、 /page04 に移動 ↓ <li><a href="/page04#part01" class="active">PART01</a></li> <li><a href="/page04#part02" class="active">PART02</a></li> <li><a href="/page04#part03" class="active">PART03</a></li> そこで「PART01」をクリック(/page04#part01に移動) ↓ <li><a href="/page04#part01" class="active">PART01</a></li> <li><a href="/page04#part02">PART02</a></li> <li><a href="/page04#part03">PART03</a></li> という理解で合っていますか?
zun30

2022/02/14 05:23

すみません。 <li><a href="/page04#part01" class="active">PART01</a></li> <li><a href="/page04#part02" class="active">PART02</a></li> <li><a href="/page04#part03" class="active">PART03</a></li> この状態は無くて、 class="active"は共通ナビのうち一つだけに付与したいと考えています。 /page04を直で訪れた場合は class="active"はどこにも付与されず、 http://○○○○.com/page04/#part01の場合は <li><a href="/page04#part01" class="active">PART01</a></li> となるような仕組みを作りたいです。 class="active"にはcssでナビボタンを目立たせる装飾をし、ユーザーの方がどのページにいるのかを分かり安く明示したいと考えております。
Lhankor_Mhy

2022/02/14 05:44

問題を把握しました。
guest

回答1

0

ベストアンサー

まず、URLフラグメント(ハッシュ)による移動には、hashchangeイベントを使う方がいいです。直接のリンクにも対応するのであれば'load hashchange'とすればいいかと思います。
次に、.attr('href')だと属性値を取ってしまうので、$(this)[0].hrefなどとして、HTMLHyperlinkElementUtils.hrefを取得するようにすると、location.hrefと一致するので余計な手間が省けると思います。

ご不明の点がありましたら、コメントでお知らせください。

投稿2022/02/14 05:55

Lhankor_Mhy

総合スコア37460

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問