javascript - 使用 jQuery 简单的下一个和上一个显示和隐藏

标签 javascript jquery css pagination show-hide

我试图找出最简单的方法来通过添加和删除一些类来显示和隐藏一系列带有 Previous 和 Next 按钮的 div。

到目前为止,我可以触发 Next 按钮,但它会将 active 类添加到所有 div,而不仅仅是下一个。

我一直在通读其他示例,到目前为止,它们看起来真的很臃肿,或者不是我要找的东西。

这是我目前所拥有的:

Codepen 链接: https://codepen.io/ultraloveninja/pen/pxrrmy/

HTML:

<div class="group">
  <div class="item active">
    <h2>Thing One</h2>
  </div>
  <div class="item">
    <h2>Thing Two</h2>
  </div>
  <div class="item">
    <h2>Thing Three</h2>
  </div>
</div>
<div class="btns">
  <a href="#" class="btn prev">Previous</a>
  <a class="btn next" href="#">Next</a>
</div>

JS:

$('.next').on("click", function(){
  if($('.item').hasClass('active')) {
    $('.item').next().addClass('active');

  }
})

CSS:

body {
  padding: 10px;
}
.active {
  display:block !important;
}

.item {
  display:none;
}

看起来这应该相当简单,但我似乎想不出如何在不显示所有其他 div 的情况下单独定位下一个 div。

最佳答案

基本上你应该得到你的最后一个事件元素并在它之后激活下一个:

$('.next').on("click", function(){
  const $active = $('.item.active');
  const $next = $active.next();

  if ($next.length) {
    $active.removeClass('active');
    $next.addClass('active');
  }
})

您当前代码中的问题是您正在获取所有元素并对所有元素执行 hasClass 因此它始终返回 true 因为此类至少有一个元素然后您在每个元素元素之后获取下一个元素,并向它们添加 active 类,以便在结果中激活所有元素。

关于javascript - 使用 jQuery 简单的下一个和上一个显示和隐藏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52784349/

相关文章:

javascript - 从 ASP 标签控件中读取文本(由 jquery 填充)

html - CSS 的布局问题和缺乏经验的问题

html - 不可能的 HTML 表格

javascript - 星级点击 addClass 功能不起作用

javascript - x 秒后更改 HTML 页面

javascript - 如何使用 Google map 标记内的 UI Router 更改状态?

html - 有什么方法可以检测移动浏览器对 HTML 5 语义标签的支持吗?

javascript - 平滑滚动到顶部不起作用

jquery - 使用 jQuery 时如何在搜索空间中包含上下文元素(选择器 [, context ] )

jquery - 主干滚动事件未触发