【问题标题】:Simple Next and Previous Show and Hide with jQuery使用 jQuery 简单的下一个和上一个显示和隐藏
【发布时间】:2019-03-17 23:16:28
【问题描述】:

我试图通过添加和删除一些类来找出显示和隐藏带有上一个和下一个按钮的一系列 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。

【问题讨论】:

    标签: javascript jquery css pagination show-hide


    【解决方案1】:

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

    $('.next').on("click", function(){
      const $active = $('.item.active');
      const $next = $active.next();
    
      if ($next.length) {
        $active.removeClass('active');
        $next.addClass('active');
      }
    })
    

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

    【讨论】:

    • 这通过显示下一个 div 起作用,但不会删除上一个类。
    • 谢谢!现在,如果我能弄清楚如何让它在课程结束时停止删除课程,那就太好了!
    • 史诗!谢谢!现在这是有道理的。使用长度通过检查比我尝试的路线容易得多,哈哈!再次感谢!
    【解决方案2】:

    我想你想要这样的东西

    $('a.next').on("click", function(){
      var a = $('.item.active').last();
      a.next().addClass('active');
      a.removeClass('active')
    });
    

    【讨论】:

    • 甜,这行得通!但是你知道如何让它在击中最后一个 div 时停止删除该类吗?否则,如果有人再次单击下一步按钮,它将删除该类并将所有内容都清空。
    • 我...我认为正在验证 if( $('.item:last').hasClass('active') )
    • 嗯,好的。是的,我正在尝试用其他一些逻辑对其进行测试,结果变得一团糟。我认为很容易检查它是否在最后一个元素上,然后停止删除类。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-03
    • 2012-10-07
    • 2013-03-14
    • 1970-01-01
    • 2013-07-07
    • 1970-01-01
    相关资源
    最近更新 更多