【问题标题】:jQuery Tab Navigation - First and Last Arrow DisabledjQuery 选项卡导航 - 禁用第一个和最后一个箭头
【发布时间】:2021-03-05 09:16:47
【问题描述】:

我有一个带有下一个/上一个导航的简单选项卡式部分。这一切都很好。我要做的是在第一个选项卡(选项卡 1)上禁用上一个按钮,在最后一个选项卡(选项卡 4)上禁用下一个按钮。我知道这可以通过添加/删除“禁用”类和样式来完成。我只是在努力融入它。

如果第一个选项卡 addClass 'disabled' 否则 removeClass 'disabled' 我想我需要为上一个按钮编写代码,如果最后一个选项卡 addClass 'disabled' 否则为 removeClass 'disabled' 为下一个按钮编写代码。

这是我目前所拥有的。

$(document).ready(function() {

  $('ul.tabs li').click(function() {
    var tab_id = $(this).attr('data-tab');

    $('ul.tabs li').removeClass('current');
    $('.tab-content').removeClass('current');

    $(this).addClass('current');
    $("#" + tab_id).addClass('current');
  })

  $('#previous').click(function() {
    $("ul.arrownavigation li:first").addClass("disabled");//This line needs editing
    if($('ul.tabs li.current').prev().length != 0 ){
    $('ul.tabs li.current').removeClass('current').prev().addClass('current').click();
        }
  })

  $('#next').click(function() {
  $("ul.arrownavigation li:first").removeClass("disabled");//This line needs editing
    if($('ul.tabs li.current').next().length != 0 ){
    $('ul.tabs li.current').removeClass('current').next().addClass('current').click();
        }
  });

});
body {
  margin-top: 100px;
  font-family: 'Trebuchet MS', serif;
  line-height: 1.6
}

.container {
  width: 800px;
  margin: 0 auto;
}

ul.tabs {
  margin: 0px;
  padding: 0px;
  list-style: none;
}

ul.tabs li {
  background: none;
  color: #222;
  display: inline-block;
  padding: 10px 15px;
  cursor: pointer;
}

ul.tabs li.current {
  background: #ededed;
  color: #222;
}

ul.arrownavigation {
  list-style: none;
    margin: 30px 0 0 0;
  padding: 0;
}

ul.arrownavigation li {
  display: inline-block;
  background: #111;
  color: #fff;
  padding: 10px;
  cursor: pointer;
  margin-right: 10px;
}

ul.arrownavigation li.disabled {
  opacity: 0.2;
  pointer-events: none;
}

.tab-content {
  display: none;
  background: #ededed;
  padding: 15px;
}

.tab-content.current {
  display: inherit;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>

<div class="container">

  <ul class="tabs">
    <li class="tab-link current" data-tab="tab-1">Tab One</li>
    <li class="tab-link" data-tab="tab-2">Tab Two</li>
    <li class="tab-link" data-tab="tab-3">Tab Three</li>
    <li class="tab-link" data-tab="tab-4">Tab Four</li>
  </ul>

  <div id="tab-1" class="tab-content current">
    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
  </div>
  <div id="tab-2" class="tab-content">
    Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
  </div>
  <div id="tab-3" class="tab-content">
    Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
  </div>
  <div id="tab-4" class="tab-content">
    Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
  </div>
  
  
  <ul class="arrownavigation">
    <li id="previous" class="disabled">Previous</li>
    <li id="next">Next</li>
  </ul>

</div>
<!-- container -->

【问题讨论】:

    标签: jquery tabs navigation


    【解决方案1】:

    测试最大值和最小值的解决方案:

    $(document).ready(function() {
      //init of times
      var idnum = 1;
      var maxtabs = $("ul.tabs li").length;
      actButtons(idnum);
    
      $('ul.tabs li').click(function() {
        var tab_id = $(this).attr('data-tab');
        idnum = parseInt(tab_id.replace("tab-", ""));
        actButtons(idnum);
    
        $('ul.tabs li').removeClass('current');
        $('.tab-content').removeClass('current');
    
        $(this).addClass('current');
        $("#" + tab_id).addClass('current');
      })
    
      $('#previous').click(function() {
        if($("#previous").hasClass("disabled"))return;
        actButtons(--idnum);
        if ($('ul.tabs li.current').prev().length != 0) {
          $('ul.tabs li.current').removeClass('current').prev().addClass('current').click();
        }
      })
    
      $('#next').click(function() {
        if($("#next").hasClass("disabled"))return;
        actButtons(++idnum);
    
        if ($('ul.tabs li.current').next().length != 0) {
          $('ul.tabs li.current').removeClass('current').next().addClass('current').click();
        }
      });
    
      function actButtons(idnum) {
        if (idnum == 1) {
          $("#previous").addClass("disabled");
          $("#next").removeClass("disabled");
        } else if (idnum == maxtabs) {
          $("#previous").removeClass("disabled");
          $("#next").addClass("disabled");
        } else {
          $("#previous").removeClass("disabled");
          $("#next").removeClass("disabled");
        }
      }
    });
    body {
      margin-top: 100px;
      font-family: 'Trebuchet MS', serif;
      line-height: 1.6
    }
    
    .container {
      width: 800px;
      margin: 0 auto;
    }
    
    ul.tabs {
      margin: 0px;
      padding: 0px;
      list-style: none;
    }
    
    ul.tabs li {
      background: none;
      color: #222;
      display: inline-block;
      padding: 10px 15px;
      cursor: pointer;
    }
    
    ul.tabs li.current {
      background: #ededed;
      color: #222;
    }
    
    ul.arrownavigation {
      list-style: none;
      margin: 30px 0 0 0;
      padding: 0;
    }
    
    ul.arrownavigation li {
      display: inline-block;
      background: #111;
      color: #fff;
      padding: 10px;
      cursor: pointer;
      margin-right: 10px;
    }
    
    ul.arrownavigation li.disabled {
      opacity: 0.2;
      pointer-events: none;
    }
    
    .tab-content {
      display: none;
      background: #ededed;
      padding: 15px;
    }
    
    .tab-content.current {
      display: inherit;
    }
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
    
    <div class="container">
    
      <ul class="tabs">
        <li class="tab-link current" data-tab="tab-1">Tab One</li>
        <li class="tab-link" data-tab="tab-2">Tab Two</li>
        <li class="tab-link" data-tab="tab-3">Tab Three</li>
        <li class="tab-link" data-tab="tab-4">Tab Four</li>
      </ul>
    
      <div id="tab-1" class="tab-content current">
        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
      </div>
      <div id="tab-2" class="tab-content">
        Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
      </div>
      <div id="tab-3" class="tab-content">
        Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
      </div>
      <div id="tab-4" class="tab-content">
        Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
      </div>
    
    
      <ul class="arrownavigation">
        <li id="previous" class="disabled">Previous</li>
        <li id="next">Next</li>
      </ul>
    
    </div>
    <!-- container -->

    【讨论】:

    • 我将更详细地介绍您的代码,以便完全了解它的功能。它完全按照我想要的方式工作。感谢您抽出时间回答我的问题。值得赞赏,我将能够从中学习。再次感谢。
    • 很高兴能帮到你,最重要的是要懂逻辑!!
    猜你喜欢
    • 1970-01-01
    • 2019-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-11
    • 1970-01-01
    相关资源
    最近更新 更多