勉強し始めたばかりの手探り状態の為、どう直せばいいのかわからず詰まっています…
どなたか知恵をお貸しください…何卒よろしくお願いいたします。
前提・実現したいこと
⑴ 絞り込み機能で「全表示(ALL)」を選択時のみ「もっと見る」と「表示数を戻す(閉じる)」ボタンが表示
⑵ 「全表示(ALL)」は初期選択状態
⑶ 記事の初期表示は10件
⑷ 全ての記事が10件に達していない場合「もっと見る」ボタンは非表示
⑸ 「もっと見る」ボタンを押すと5件ずつ追加表示
⑹ 全ての記事を表示し終えたら「表示数を戻す(閉じる)」ボタンが表示
発生している問題・エラーメッセージ
絞り込み機能と、ボタンの表示はなんとかできましたが、
-
絞り込み機能で「全表示(ALL)」を選択時のみ「もっと見る」と「表示数を戻す(閉じる)」ボタンが表示
-
全ての記事が10件に達していない場合「もっと見る」ボタンは非表示
ができませんでした。
現状、「全表示(ALL)」以外のカテゴリーを選択しても「もっと見る」と「表示数を戻す(閉じる)」ボタンが表示されてしまい
ボタンを押すと、全ての記事が表示されてしまいます。
該当のソースコード
html
1<div id="page works-main"> 2 <div class="search searchList categories"> 3 <span class="search_item is-active" data-group="">ALL</span> 4 <span class="search_item" data-group="a">A</span> 5 <span class="search_item" data-group="b">B</span> 6 <span class="search_item" data-group="c">C</span> 7 <span class="search_item" data-group="d">D</span> 8 <span class="search_item" data-group="e">E</span> 9 </div> 10 11 <div id="entry_list_more" id="gallery"> 12 13 <!-- /記事一覧 --> 14 <ul class="list"> 15 <li class="list_item" data-group="a">1件目の記事</li> 16 <li class="list_item" data-group="a">2件目の記事</li> 17 <li class="list_item" data-group="a">3件目の記事</li> 18 <li class="list_item" data-group="a">4件目の記事</li> 19 <li class="list_item" data-group="b">5件目の記事</li> 20 <li class="list_item" data-group="b">6件目の記事</li> 21 <li class="list_item" data-group="b">7件目の記事</li> 22 <li class="list_item" data-group="b">8件目の記事</li> 23 <li class="list_item" data-group="b">9件目の記事</li> 24 <li class="list_item" data-group="c">10件目の記事</li> 25 <li class="list_item" data-group="d">11件目の記事</li> 26 <li class="list_item" data-group="d">12件目の記事</li> 27 <li class="list_item" data-group="d">13件目の記事</li> 28 <li class="list_item" data-group="d">14件目の記事</li> 29 <li class="list_item" data-group="e">15件目の記事</li> 30 <li class="list_item" data-group="e">16件目の記事</li> 31 <li class="list_item" data-group="e">17件目の記事</li> 32 33 </ul> 34 <div id="more_btn">もっと見る <i class="fa fa-chevron-down" aria-hidden="true"></i></div> 35 <div id="close_btn">表示数を戻す <i class="fa fa-chevron-up" aria-hidden="true"></i></div> 36 37</div>
javascript
1 2<script> 3 var searchItem = '.search_item'; 4 var listItem = '.list_item'; 5 var hideClass = 'is-hide'; 6 var activeClass = 'is-active'; 7 8 $(function() { 9 $(searchItem).on('click', function() { 10 $(searchItem).removeClass(activeClass); 11 var group = $(this).addClass(activeClass).data('group'); 12 search_filter(group); 13 }); 14 }); 15 16 function search_filter(group) { 17 $(listItem).removeClass(hideClass); 18 // 値が空の場合はすべて表示 19 if(group === '') { 20 return; 21 } 22 for (var i = 0; i < $(listItem).length; i++) { 23 var itemData = $(listItem).eq(i).data('group'); 24 if(itemData !== group) { 25 $(listItem).eq(i).addClass(hideClass); 26 } 27 } 28 } 29 30</script> 31 32 33<script> 34var listContents = $("#works_list_more li").length; 35$("#works_list_more").each(function(){ 36 37var Num = 10; 38 39$(this).find('#more_btn').show(); 40$(this).find('#close_btn').hide(); 41$(this).find("li:not(:lt("+Num+"))").hide(); 42 43 44$('#more_btn').click(function(){ 45Num +=5; 46$(this).parent().find("li:lt("+Num+")").slideDown(); 47 48 49if(listContents <= Num){ 50Num = 10; 51gtNum = Num-1; 52$('#more_btn').hide(); 53$('#close_btn').show(); 54 55$('#close_btn').click(function(){ 56$(this).parent().find("li:gt("+gtNum+")").slideUp(); 57$(this).hide(); 58$('#more_btn').show(); 59}); 60} 61}); 62}); 63
-----以下追記------
CSS
1 2/* 基本設定 */ 3 4#works { 5 display: flex; 6 flex-wrap: wrap; 7 justify-content: space-between; 8 margin: 0 auto; 9 text-align: center; 10} 11 12/* カテゴリー分け部分 */ 13 14.search_item { 15 display: inline-block; 16 cursor: pointer; 17 background: #7bc3d1; 18 color: #fff; 19 padding: 5px 12px; 20 margin: 0px 5px; 21 border-radius: 25px; 22} 23.search_item.is-active { 24 color: white; 25 background-color: black; 26} 27.search_item:hover { 28 opacity: 0.6; 29 transition-duration: 0.3s; 30} 31 32.is-hide { 33 display: none; 34} 35 36#page { 37 width: 1380px; 38 margin: 0 auto; 39} 40 41.searchList { 42 margin-bottom: 20px; 43} 44 45 46.list { 47 overflow: hidden; 48 justify-content: center 49} 50.list li { 51 float: left; 52 width: 19%; 53 margin: 0px 5px 10px 5px; 54} 55 56 57#more { 58 display: none; 59} 60 61#more_btn, #close_btn { 62 background-color: #7bc3d1; 63 color: #fff; 64 border: none; 65 cursor: pointer; 66 outline: none; 67 padding: 0; 68 height: 32px; 69 line-height: 32px; 70 width: 120px; 71 border-radius: 16px; 72 text-align: center; 73 margin: 0 auto; 74 margin-top: 35px; 75 z-index: 1; 76 clear: left; 77} 78 79.categories { 80 padding-bottom: 20px; 81 padding-top: 10px; 82 text-align: center; 83} 84.works-main { 85 display: flex; 86 flex-wrap: wrap; 87}
回答1件
あなたの回答
tips
プレビュー