javascript - jQuery Slide Down 使用 slice 显示更多内容

标签 javascript jquery html css slice

我不确定为什么这不能按预期工作,因为我在另一个应用程序上有几乎完全的代码并且它工作正常。

我正在使用 jQuery slice 来两次显示 div 中的前两个元素,但是当您点击 View More 时,它会向下滑动并显示下一个5个元素。它会一直持续到显示所有元素,然后隐藏 View More 按钮。

到目前为止,当您加载页面时,一切正常。然后,当您单击 View More 时,它只会显示接下来的 3 个元素,然后就停止了。不确定我是否需要在 slice 中设置不同的东西或者什么,但我在其他东西上使用了同样的东西并且它工作正常。

这是我的代码: HTML:

<div class="full-list">
  <p>Item 01</p>
  <p>Item 02</p>
  <p>Item 03</p>
  <p>Item 04</p>
  <p>Item 05</p>
  <p>Item 06</p>
  <p>Item 07</p>
  <p>Item 08</p>
  <p>Item 09</p>
  <p>Item 10</p>
  <p>Item 11</p>
  <p>Item 12</p>
  <p>Item 13</p>
  <p>Item 14</p>
  <p>Item 15</p>

  <a id="viewAll" class="view-more-btn" href="#">View More</a>
</div>

CSS:

.full-list p {
  display: none;
}

JS:

$(".full-list p")
  .slice(0, 2)
  .show();
$(".full-list p:hidden").css("opacity", 0);
$("#viewAll").on("click", function(e) {
  $(".full-list p")
    .slice(0, 5)
    .slideDown("slow")
    .animate(
      {
        opacity: 1
      },
      {
        queue: false,
        duration: "slow"
      }
    );
  if ($(".full-list p").length == 0) {
    $("#viewAll").fadeOut("slow");
  }
  e.preventDefault();
});

演示链接 (CodePen): https://codepen.io/ultraloveninja/pen/Krxodj

所以,我不确定为什么它对一件事有效而对另一件事无效?我想知道是否存在嵌套问题,但我已经针对特定的类名对其进行了测试,但它仍然无法正常工作。

最佳答案

您的隐藏元素集选择器需要包含 :hidden 伪类。您发布的代码只会显示前 5 个元素。请查看下面包含 :hidden 的代码段:

$(".full-list p")
  .slice(0, 2)
  .show();
$(".full-list p:hidden").css("opacity", 0);
$("#viewAll").on("click", function(e) {
  $(".full-list p:hidden") // Added :hidden
    .slice(0, 5)
    .slideDown("slow")
    .animate(
      {
        opacity: 1
      },
      {
        queue: false,
        duration: "slow"
      }
    );
  // We need to check the count of just the hidden items
  if ($(".full-list p:hidden").length == 0) {
    $("#viewAll").fadeOut("slow");
  }
  e.preventDefault();
});
.full-list p {
  display: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="full-list">
  <p>Item 01</p>
  <p>Item 02</p>
  <p>Item 03</p>
  <p>Item 04</p>
  <p>Item 05</p>
  <p>Item 06</p>
  <p>Item 07</p>
  <p>Item 08</p>
  <p>Item 09</p>
  <p>Item 10</p>
  <p>Item 11</p>
  <p>Item 12</p>
  <p>Item 13</p>
  <p>Item 14</p>
  <p>Item 15</p>

  <a id="viewAll" class="view-more-btn" href="#">View More</a>
</div>

关于javascript - jQuery Slide Down 使用 slice 显示更多内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53508262/

相关文章:

javascript - Angularjs blueimp fileUpload手动触发提交

javascript - 灯箱关闭链接在 IE7 中不起作用

javascript - jQuery 颜色选择器单击时更改颜色

jquery - 如何停用/禁用 fancytree 节点?

html - 使用 HTML5 视频跟踪 move/调整大小事件?

Javascript 正则表达式只允许最多 10 位数字,不允许字符串和特殊字符

javascript - 如何定义要求对象数组包含至少 2 个特定值属性的 JSON Schema?

javascript - 如何使jquery每个数字

javascript - 外部 jQuery 脚本无响应

javascript - OWL Carousel 2 - 滑动超过 1 个带点的元素