前提・実現したいこと
jqueryでタブメニューの実装
お疲れ様です。
僭越ながら、ご質問させていただきます。
https://cocotsubu.com/2019/05/31/post-3179/
上記のサイトを参考に、jqueryでタブメニューを作っています。
ページを開いた、(読み込み時)に、なぜか、.ranking__items(タブ内のコンテンツ)に[display: none]が追加されてしまいます。
本来、タブをクリックした時に、一旦全てのタブに[display: none]が付与されてから、クリックしたものに対応した#(id)のもののみ、fadein()するものだと考えていますが、最初からタブに対応したコンテンツにhide()が適用されています。
$('.ranking__items').hide().filter(this.hash).fadeIn();
こちらの1行を削除すると、[display: none]の適用がなくなることから、この1行がタブをクリックしていないのに、ページ読み込み時に発動してしまっているものと考えられます。
なぜ、クリックしていないのに発動してしまうのか、分からずに困っております。
何卒、お助けいただければ幸いです。
宜しくお願い致します。
発生している問題
ページ読み込み時に、.ranking__items に style display:none が追加されてしまう
HTML
<div class="ranking__tab-box"> <div class="ranking__tab ranking__tab-current">人気ランキング</div> <div class="ranking__tab">おすすめ商品</div> <div class="ranking__tab">新商品</div> </div> <div id="items1" class="ranking__items"> <picture class="ranking__img-box"> <source media="(max-width: 639px)" srcset="img/ranking-1.jpg 2x"> <img src="img/ranking-1.jpg" srcset="img/ranking-1.jpg 2x" class="ranking__img" alt=""> <p class="ranking__item-name">商品名</p> <hr class="ranking__price-separate"> <p class="ranking__price">1,296<span class="ranking__yen"> 円(税込)</span></p> </picture> <picture class="ranking__img-box"> <source media="(max-width: 639px)" srcset="img/ranking-2.jpg 2x"> <img src="img/ranking-2.jpg" srcset="img/ranking-2.jpg 2x" class="ranking__img" alt=""> <p class="ranking__item-name">商品名</p> <hr class="ranking__price-separate"> <p class="ranking__price">1,296<span class="ranking__yen"> 円(税込)</span></p> </picture> <picture class="ranking__img-box"> <source media="(max-width: 639px)" srcset="img/ranking-3.jpg 2x"> <img src="img/ranking-3.jpg" srcset="img/ranking-3.jpg 2x" class="ranking__img" alt=""> <p class="ranking__item-name">商品名</p> <hr class="ranking__price-separate"> <p class="ranking__price">1,296<span class="ranking__yen"> 円(税込)</span></p> </picture> <picture class="ranking__img-box"> <source media="(max-width: 639px)" srcset="img/ranking-4.jpeg 2x"> <img src="img/ranking-4.jpg" srcset="img/ranking-4.jpeg 2x" class="ranking__img" alt=""> <p class="ranking__item-name">商品名</p> <hr class="ranking__price-separate"> <p class="ranking__price">1,296<span class="ranking__yen"> 円(税込)</span></p> </picture> </div> <div id="items2" class="ranking__items"> <picture class="ranking__img-box"> <source media="(max-width: 639px)" srcset="img/ranking-1.jpg 2x"> <img src="img/ranking-1.jpg" srcset="img/ranking-1.jpg 2x" class="ranking__img" alt=""> <p class="ranking__item-name">商品名</p> <hr class="ranking__price-separate"> <p class="ranking__price">1,296<span class="ranking__yen"> 円(税込)</span></p> </picture> <picture class="ranking__img-box"> <source media="(max-width: 639px)" srcset="img/ranking-2.jpg 2x"> <img src="img/ranking-2.jpg" srcset="img/ranking-2.jpg 2x" class="ranking__img" alt=""> <p class="ranking__item-name">商品名</p> <hr class="ranking__price-separate"> <p class="ranking__price">1,296<span class="ranking__yen"> 円(税込)</span></p> </picture> <picture class="ranking__img-box"> <source media="(max-width: 639px)" srcset="img/ranking-3.jpg 2x"> <img src="img/ranking-3.jpg" srcset="img/ranking-3.jpg 2x" class="ranking__img" alt=""> <p class="ranking__item-name">商品名</p> <hr class="ranking__price-separate"> <p class="ranking__price">1,296<span class="ranking__yen"> 円(税込)</span></p> </picture> <picture class="ranking__img-box"> <source media="(max-width: 639px)" srcset="img/ranking-4.jpeg 2x"> <img src="img/ranking-4.jpg" srcset="img/ranking-4.jpeg 2x" class="ranking__img" alt=""> <p class="ranking__item-name">商品名</p> <hr class="ranking__price-separate"> <p class="ranking__price">1,296<span class="ranking__yen"> 円(税込)</span></p> </picture> </div> <div id="items3" class="ranking__items"> <picture class="ranking__img-box"> <source media="(max-width: 639px)" srcset="img/ranking-1.jpg 2x"> <img src="img/ranking-1.jpg" srcset="img/ranking-1.jpg 2x" class="ranking__img" alt=""> <p class="ranking__item-name">商品名</p> <hr class="ranking__price-separate"> <p class="ranking__price">1,296<span class="ranking__yen"> 円(税込)</span></p> </picture> <picture class="ranking__img-box"> <source media="(max-width: 639px)" srcset="img/ranking-2.jpg 2x"> <img src="img/ranking-2.jpg" srcset="img/ranking-2.jpg 2x" class="ranking__img" alt=""> <p class="ranking__item-name">商品名</p> <hr class="ranking__price-separate"> <p class="ranking__price">1,296<span class="ranking__yen"> 円(税込)</span></p> </picture> <picture class="ranking__img-box"> <source media="(max-width: 639px)" srcset="img/ranking-3.jpg 2x"> <img src="img/ranking-3.jpg" srcset="img/ranking-3.jpg 2x" class="ranking__img" alt=""> <p class="ranking__item-name">商品名</p> <hr class="ranking__price-separate"> <p class="ranking__price">1,296<span class="ranking__yen"> 円(税込)</span></p> </picture> <picture class="ranking__img-box"> <source media="(max-width: 639px)" srcset="img/ranking-4.jpeg 2x"> <img src="img/ranking-4.jpg" srcset="img/ranking-4.jpeg 2x" class="ranking__img" alt=""> <p class="ranking__item-name">商品名</p> <hr class="ranking__price-separate"> <p class="ranking__price">1,296<span class="ranking__yen"> 円(税込)</span></p> </picture> </div> -------------------------------------------------- CSS &__tab-box { border-bottom: 1px solid $default-blue; color: $default-blue; display: flex; margin-top: 10px; } &__tab { border-radius: 8px 8px 0 0; cursor: pointer; flex-basis: 33.333%; text-align: center; padding: 5px 0; } &__tab-current { background: $default-blue; color: #ffffff; } &__items { display: flex; padding-top: 30px; } &__img-box { display: table; margin-right: 10px; flex-basis: 25%; } &__img { object-fit: cover; width: 100%; height: 100%; } &__item-name { padding: 10px 0; } &__price { padding-top: 10px; } &__yen { color: gray; font-size: 12px; } &__see-more-box { text-align: center; padding: 30px 0; } ------------------------------------------- jQuery $('.ranking__tab').click(function () { // おそらく↓この行に原因あり $('.ranking__items').hide().filter(this.hash).fadeIn(); $('.ranking__tab').removeClass('ranking__tab-current'); $(this).addClass('ranking__tab-current'); return false; });
HTML CSS jQuery
試したこと
原因と思われるコードをコメントアウトし、原因箇所の特定。
しかし、原因箇所の何が悪いのかわかりませんでした。
補足情報(FW/ツールのバージョンなど)
jqueryは、ver 3.5.1を使用しております。
<script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/17 06:46