删除 jQuery 中的切片增量

Remove slice increment in jQuery

提问人:Beep 提问时间:6/4/2020 更新时间:6/4/2020 访问量:119

问:

我有一个列表,每个列表元素都有类,我使用 jQuery 函数切片从我的列表中只显示 6 个,直到用户单击按钮加载更多,这有效,每次点击都会增加 3 个,这就是我之后的,所以这是有效的。.card-deck<button class="show-more w-100">Load more</button>

我需要的也是一个减少 3 的按钮,我试图简单地将我的 +3 更改为 -3,但这不起作用。

有没有办法修改我的代码以使其正常工作? 此外,出于某种原因,我需要单击该按钮两次才能使其在第一次单击时正常工作。有没有办法让它在第一次点击时工作?

我的代码

if ($('.card-deck').length > 6) {
    $('.card-deck').hide();
    $('.card-deck').slice(0,6).show();
}
let clicks = +3;
$('.show-more').on('click', function() {
    clicks = clicks+3;
    $('.card-deck').slice(0,clicks).fadeIn();
});

$('.show-less').on('click', function() {
    clicks = clicks-3;
    $('.card-deck').slice(0,clicks).fadeIn();
});
JavaScript jQuery 切片 增量

评论

1赞 epascarello 6/4/2020
好吧,您需要隐藏显示的那些
1赞 freedomn-m 6/4/2020
如上所述,将您的 less fadeIn 替换为:(还有其他方法,这只是为了显示位置/方式)$('.card-deck').slice(clicks,clicks+3).fadeOut()

答:

2赞 epascarello 6/4/2020 #1

您需要隐藏显示的那些。

const cards = $('.card-deck')
let clicks = 3;
let stepSize = 3

if (cards.length > 3) {
  cards.hide();
  cards.slice(0, 3).show();
}
$('.show-more').on('click', function() {
  clicks = clicks + stepSize;
  if (clicks > cards.length) {
    clicks = cards.length
  }
  cards.slice(0, clicks).fadeIn();
});

$('.show-less').on('click', function() {
  clicks = clicks - stepSize;
  if (clicks < 0) {
    clicks = 0
  }
  cards.slice(clicks, cards.length).fadeOut();
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul>
  <li class="card-deck">1</li>
  <li class="card-deck">2</li>
  <li class="card-deck">3</li>
  <li class="card-deck">4</li>
  <li class="card-deck">5</li>
  <li class="card-deck">6</li>
  <li class="card-deck">7</li>
  <li class="card-deck">8</li>
  <li class="card-deck">9</li>
  <li class="card-deck">10</li>
  <li class="card-deck">11</li>
  <li class="card-deck">12</li>
</ul>

<button class="show-more">+</button>
<button class="show-less">-</button>