質問: document.location.hash; if (hashTabName) { $('.navi_wrap a[href=' + hashTabName + ').tab('show'); } ``` ### 問題1classが追加されません。 目的としては、 現在選択しているタグを分かりやすくするために、デザインを変える記述を追加すること。 その方法として、選択したタグにclassを追加させたいのですが、以下の方法では、classが追加されませんでした。 ``` ul.navi_wrap li a.active{ font-weight: bold; color: #fff; } ``` 選択中のデザインを変える記述をcssに追記 ``` // タブ-クリック表示 $('.navi_wrap a').on('click', function(e) { e.preventDefault(); $(this).tab('show').addClass('active'); }); ``` $(this).tab('show') の後に .addClass('active')を追加。 これで、classが追加されると思いきや、追加されません! もちろんこの後、 ifを用いて、classの追加・削除を記述しなければ、選択中のみの表示を変えることができませんが、classを追加する部分でつまずいていましました。 なぜclassが追加されないのでしょう? ### 2選択した内容以外を非表示にしたい。 問題1の方で、class追加が実装できれば、こちらも簡単にできそうな気がしますが、、、 問題1でつまずいているため、こちらがまったくできません。 classの追加・削除以外で、コントロールできる方法があれば、アドバイスがほしいです。
回答: だいぶ時間が空いてしまいましたが、 jQueryについて理解が深まった今だから、理解できました。 kanimaruさんから質問された内容が、そのまま答えでした。 > > $(this).tab('show') この tabって関数定義jQueryには定義無いと思いますが、何かjQueryの拡張ライブラリを読み込んでいらっしゃるのでしょうか。そのまま使うと、tabの関数定義が無くエラーとなると思います。 > > > JSを下記のように修正すれば、解決しました。 ``` $('.navi_wrap a').on('click', function() { $('.navi_wrap a').removeClass("active"); $(this).addClass("active") }); ```