もっと見るで指定した件数ずつ表示させる
jQuery
サンプルはこちら
[html]
<div class="js-accordion">
<ul>
<li>TEXT 01</li>
<li>TEXT 02</li>
<li>TEXT 03</li>
<li>TEXT 04</li>
<li>TEXT 05</li>
<li>TEXT 06</li>
<li>TEXT 07</li>
<li>TEXT 08</li>
<li>TEXT 09</li>
<li>TEXT 10</li>
<li>TEXT 11</li>
<li>TEXT 12</li>
<li>TEXT 13</li>
<li>TEXT 14</li>
<li>TEXT 15</li>
<li>TEXT 16</li>
<li>TEXT 17</li>
<li>TEXT 18</li>
<li>TEXT 19</li>
<li>TEXT 20</li>
</ul>
<div class="btn js-btn-more">もっと見る</div>
<div class="btn js-btn-close">閉じる</div>
</div>
[/html]
[js]
$(function () {
// liの数を取得
const listItems = $(".js-accordion li").length;
$(".js-accordion").each(function () {
// 最初に表示させるliの数
let num = 5,
// 閉じた時に表示させるliの数
closeNum = num – 1;
// 最初はもっと見るボタン表示、閉じるボタン非表示
$(this).find(".js-btn-more").show();
$(this).find(".js-btn-close").hide();
// 5行目まで表示
$(this)
.find("li:not(:lt(" + num + "))")
.hide();
// もっと見るボタンがクリックされた時
$(".js-btn-more").click(function () {
// numに+5ずつしていく = 5行ずつ追加する
num += 5;
$(this)
.parent()
.find("li:lt(" + num + ")")
.slideDown();
// liの数よりnumが多い時、
if (listItems <= num) {
// もっと見るボタン非表示
$(".js-btn-more").hide();
// 閉じるボタン表示
$(".js-btn-close").show();
// 閉じるボタンがクリックされたら、
$(".js-btn-close").click(function () {
$(this)
.parent()
.find("li:gt(" + closeNum + ")")
// 6行目以降は非表示
.slideUp();
// 閉じるボタンを非表示
$(this).hide();
// もっと見るボタン表示に
$(".js-btn-more").show();
});
}
});
});
});
[/js]
[css]
.btn {
border: 1px solid #333;
cursor: pointer;
display: inline-block;
font-size: 18px;
margin-top: 10px;
padding: 10px;
}
[/css]