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

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

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

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

ドロップダウンメニュー

GUIを操作するユーザーインターフェイスで、リストボックスに似ており、ユーザーがリストから値を選べるようにするものです。ドロップダウンのリストが非アクティブの場合は、単体の値を表示します。アクティブ化されると、ユーザーが選択可能な値のリスト一覧を表示(ドロップダウン)します。

JavaScript

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

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

Q&A

解決済

1回答

2123閲覧

BootStrapのドロップダウンメニューの中にタブメニューをいれたい

KoheiOkazaki

総合スコア43

HTML5

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

ドロップダウンメニュー

GUIを操作するユーザーインターフェイスで、リストボックスに似ており、ユーザーがリストから値を選べるようにするものです。ドロップダウンのリストが非アクティブの場合は、単体の値を表示します。アクティブ化されると、ユーザーが選択可能な値のリスト一覧を表示(ドロップダウン)します。

JavaScript

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

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

0グッド

2クリップ

投稿2019/10/24 10:05

bootstrapのドロップダウンメニューではリンクしか想定されていないため、中身をクリックしてもメニューが消えてしまうためそれを防ぐために以下のコードを使ってそれを防ぐことはわかったのですが、

javascript

1$('.dropdown-menu').click(function(e) { 2 e.stopPropagation(); 3});

このコードをいれると中身のタブ変更のjsが動かなくなり、困っています。BootStrapのJsの仕様を変えるか、中身のタブだけBootStrapを使わずに実装するのがいいのか、最適な解決策を教えてくれると助かります。以下htmlです。

html

1<div class="dropdown"> 2<button class="btn btn-default" type="button" id="messages" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true"> 3ボタン 4</button> 5<div class="dropdown-menu" aria-labelledby="messages"> 6<ul class="nav nav-tabs"> 7<li class="active"><a href="#touhoku2" data-toggle="tab">東北地方</a></li> 8<li><a href="#kantou2" data-toggle="tab">関東地方</a></li> 9<li><a href="#chuubu2" data-toggle="tab">中部地方</a></li> 10</ul> 11<div class="tab-content"> 12<div class="tab-pane fade in active" id="touhoku2"> 13<p>青森県・岩手県・宮城県・秋田県・山形県・福島県</p> 14</div> 15<div class="tab-pane fade" id="kantou2"> 16<p>茨城県・栃木県・群馬県・埼玉県・千葉県・東京都・神奈川県</p> 17</div> 18<div class="tab-pane fade" id="chuubu2"> 19<p>新潟県・富山県・石川県・福井県・山梨県・長野県・岐阜県・静岡県・愛知県</p> 20</div> 21</div> 22</div> 23</div>

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

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

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

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

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

guest

回答1

0

ベストアンサー

BootStrapのJsの仕様を変えるか、中身のタブだけBootStrapを使わずに実装するのがいいのか

どちらの操作も必要ありません。現在の質問文のコードに少し変更を加えるだけで、そのコードは質問者さんの意図通りに動作するようになります。


まず、タブ ([data-toggle="tab"]) をターゲットとしてクリックイベントを設定し、そこでイベントの伝播を抑止します。これにより、タブをクリックしたときにドロップダウンが閉じてしまう現象が改善されます (動作確認用リンク)。

jQuery

1$(`[data-toggle="tab"]`).on("click", function(e) { 2 e.stopPropagation(); 3});

次に、 $().tab メソッドを使用します。$().tab メソッドは、タブとして使用されている要素を指定すると、そのタブと紐付けられているペインがアクティブになります

.tab(‘show’)

Selects the given list item and shows its associated pane. Any other list item that was previously selected becomes unselected and its associated pane is hidden. Returns to the caller before the tab pane has actually been shown (for example, before the shown.bs.tab event occurs).

つまり、タブをクリックしたときにイベントの伝播を抑制した上で、クリックされたタブ要素を指定した $().tab メソッドを呼び出せば、質問者さんの実現したいことが行えるということです。このとおりのコードを書くと以下のようになり、タブの遷移が正常に行えるようになります (動作確認用リンク)。

jQuery

1$(`[data-toggle="tab"]`).on("click", function(e) { 2 e.stopPropagation(); 3 $(this).tab("show"); 4});

投稿2019/10/26 00:23

s8_chu

総合スコア14731

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

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

KoheiOkazaki

2019/10/28 08:36

ありがとうございます!解決できました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問