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

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

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

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

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

Q&A

解決済

1回答

2110閲覧

メニューのActive効果をURLにパラメーターがついても出したい

lovelydai

総合スコア38

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

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

0グッド

0クリップ

投稿2017/10/19 05:49

こんにちは!
少しシンプルなメニューを作ってみました。そこで、メニューをクリックしてページ移動すると、そのページのメニューはaddClassでactiveさせて色が変わるようになっています。

Javascript

1 2<script type="text/javascript"> 3 $(document).ready(function () { 4 var url = window.location; 5 $('div.panel-body a[href="'+ url + '"]').addClass('active'); 6 $('div.panel-body a').filter(function() { 7 return this.href == url; 8 }).addClass('active'); 9 }); 10</script>

HTML

1 <div class="panel panel-default"> 2 <div class="panel-heading"> 3 <h4 class="panel-title"> 4 <a data-toggle="collapse" data-parent="#accordion" href="#collapse2"> 5 施設・設備・講義室</a> 6 </h4> 7 </div> 8 <div id="collapse" class="panel-collapse collapse in"> 9 <div class="panel-body"> 10 <div id="collapse" class="list-group"> 11 <a href="/campus" class="list-group-item">キャンパスマスタ</a> 12 <a href="/facility" class="list-group-item">施設マスタ</a> 13 <a href="/equipment" class="list-group-item">設備マスタ</a> 14 <a href="/room" class="list-group-item">講義室マスタ</a> 15 </div> 16 </div> 17 </div> 18 </div>

すると、例えばちゃんパスマスタメニューを押して http://localhost:8765/campus に移動するとメニューがActiveされますが、http://localhost:8765/campus/view に移動するとActive効果がなくなります。
URLだけだとActive効果がちゃんと出てます。
URLにパラメーターが付くとActive効果がなくなります。

やりたいことは、URLにパラメーターがついてもActive効果が効くようにしたいです。後ろにつくパラメーターを無視できれば動くはずですがJQueryやJavascriptの知識が薄くて上手くできませんでした。
どのように書けば問題なく動きそうですか?教えていただけますでしょうか。

どうぞよろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

試してないですが。

javascript

1return url.indexOf(this.href) != -1

訂正

javascript

1return url.href.indexOf(this.href) != -1

投稿2017/10/19 06:06

編集2017/10/20 04:55
Lhankor_Mhy

総合スコア36074

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

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

lovelydai

2017/10/19 09:16

回答ありがとうございます。しかし、残念ながら動作しませんでした。T‗T
kei344

2017/10/19 16:25

To: Lhankor_Mhyさん url と this.href が逆ならいけるような。
Lhankor_Mhy

2017/10/20 00:20

あれ? リンクURL(this.href)が現在のURL(url)に包含されているならクラス属性を付与する、だと思うので間違ってなさそうな……?
kei344

2017/10/20 04:09

To: Lhankor_Mhyさん すみません、寝ぼけてたようです。
lovelydai

2017/10/20 04:29

コメントありがとうございます。うーん、教えていただいたコードにあるFUNCTIONなどを調べてみましたら、動きそうですが…コードを変えるとうまく動いたページも動きませんでした。何が問題でしょうかね…
Lhankor_Mhy

2017/10/20 04:36

変更後のコードをご提示いただければ、何かご助言ができるかもしれません。
lovelydai

2017/10/20 04:39

こんな感じです!お願いします! <script type="text/javascript"> $(document).on('load',function () { var url = window.location; $('div.panel-body a[href="'+ url + '"]').addClass('active'); $('div.panel-body a').filter(function() { return url.indexOf(this.href) != -1; }).addClass('active'); }); </script>
Lhankor_Mhy

2017/10/20 04:54

ああ、そうか、失礼しました。私の間違いです。訂正します。
lovelydai

2017/10/20 05:04

Lhankor_Mhyさん、できました!まことにありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問