javascript - 单击按钮时显示更多元素?

标签 javascript jquery

我试图在我的页面上显示 5 个元素,然后有一个函数可以加载/显示另外 5 个元素,这个过程可以继续,直到没有更多的隐藏元素为止。

我创建了一个 fiddle 来向您展示我到目前为止所做的事情:https://jsfiddle.net/89v781rL/2/

目前,当点击按钮时,所有隐藏元素同时显示,这不是我想要的。我需要向当时显示的元素再添加 5 个元素..

我尝试过类似的方法,但它不起作用:

$('#grid li').not(':visible').each( function() {    
  $("#grid").children(":gt(4)").hide();
});

这是我的完整工作代码:

$("#grid").children(":gt(4)").hide();

$('#sales').click(function() {
    $('#grid li').not(':visible').each( function() {
      $(this).slideDown();
    });
});

最佳答案

您可以通过使用 slice() 获取接下来的 5 个隐藏元素并对它们调用 slideDown() 来实现您的需要。另请注意,您可以使用 CSS 的 :nth-child 来隐藏元素而不是 JS,从而避免在加载时出现 FOUC。试试这个:

$('#sales').click(function() {
  $('#grid li:hidden').slice(0, 5).slideDown();
});
#grid li:nth-child(n+6) {
  display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="grid effect-2 cols" id="grid">
  <li><a href="#">1</a></li>
  <li><a href="#">2</a></li>
  <li><a href="#">3</a></li>
  <li><a href="#">4</a></li>
  <li><a href="#">5</a></li>
  <li><a href="#">6</a></li>
  <li><a href="#">7</a></li>
  <li><a href="#">8</a></li>
  <li><a href="#">9</a></li>
  <li><a href="#">10</a></li>
  <li><a href="#">11</a></li>
  <li><a href="#">12</a></li>
  <li><a href="#">13</a></li>
  <li><a href="#">14</a></li>
  <li><a href="#">15</a></li>
  <li><a href="#">16</a></li>
  <li><a href="#">17</a></li>
</ul>

<button id="sales">
  Show more
</button>

关于javascript - 单击按钮时显示更多元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43114942/

相关文章:

javascript - 使用正则表达式格式化负数

javascript - Bootstrap 模式使用 Angular 绑定(bind)数据而不是绑定(bind)

javascript - 选择要隐藏的所有子元素,但不会在单击时取消隐藏所有元素

javascript - 单击底部并返回原始位置时动画 div

javascript - 我如何获取一个 JS 数组,它有一些元素也是数组,并使所有数组元素成为顶级元素

javascript - AngularJS:在 ng-repeat 中调用 ng 样式函数时出现 $rootScope:infdig 错误

javascript - jquery 显示/隐藏使图像变大

javascript - iframe 高度在页面内容较长后不会缩小

javascript - jquery克隆元素并增加id

jquery - 通过剑道网格中的客户端模板将 css 添加到单元格