【问题标题】:How to change class of bootstrap navigation?如何更改引导导航的类别?
【发布时间】:2020-06-23 05:08:13
【问题描述】:

我有一个引导导航栏,其中 “添加新候选人” 是我作为 li 的导航选项。我想将其类"nav-item has-treeview" 更改为 "nav-item has-treeview menu-open" 当用户选择它并还将ul类(即“添加新候选人”中的“一般信息”)更改为“nav-link active” .

我也尝试过这里提到的解决方案Bootstrap CSS Active Navigation

Navigation Bar image

Expected Outcome

$(document).ready(function(){
  $('.nav nav-pills nav-sidebar flex-column li').click(function(e) {
    var $this = $(this);
    if (!$this.hasClass('nav-item has-treeview')) {
      $this.addClass('nav-item has-treeview menu-open');
    }
    e.preventDefault();
  });
 
  $('.nav nav-pills nav-sidebar flex-column li a').click(function(e) {
    var $this = $(this);
    if (!$this.hasClass('nav-link')) {
      $this.addClass('nav-link active');
    }
    e.preventDefault();
  });

  $('.nav nav-treeview li a').click(function(e) {
    var $this = $(this);
    if (!$this.hasClass('nav-link')) {
      $this.addClass('nav-link active');
    }
    e.preventDefault();
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<ul class="nav nav-pills nav-sidebar flex-column" data-widget="treeview" role="menu" data-accordion="false">
<li class="nav-item has-treeview">
<!-- <li class="nav-item has-treeview menu-open"> -->
    <a href="addnewCandidate" class="nav-link">
    <!-- <a href="addnewCandidate" class="nav-link active"> -->
        <i class="nav-icon fas fa-tachometer-alt"></i>
        <p>Add new Candidate <i class="right fas fa-angle-left"></i></p>
    </a>

    <ul class="nav nav-treeview">
        <li class="nav-item">
            <a href="addnewCandidate" class="nav-link">
            <!-- <a href="addnewCandidate" class="nav-link active"> -->
                <i class="far fa-circle nav-icon"></i>
                <p>General Information</p>
            </a>
        </li>
           
        <li class="nav-item" >
            <a href="educationInfo" class="nav-link">
                <i class="far fa-circle nav-icon" id="education" ></i>
                <p>Education</p>
            </a>
        </li>
       
        <li class="nav-item">
            <a href="trainingInfo" class="nav-link">
                <i class="far fa-circle nav-icon"></i>
                <p>Training</p>
            </a>
        </li>

        <li class="nav-item">
            <a href="workExperienceInfo" class="nav-link">
                <i class="far fa-circle nav-icon"></i>
                <p>WorkExperience</p>
            </a>
        </li>


        <li class="nav-item">
            <a href="languageInfo" class="nav-link">
                <i class="far fa-circle nav-icon"></i>
                <p>Language</p>
            </a>
        </li>
    </ul>
</li>
</ul>

【问题讨论】:

    标签: jquery html css bootstrap-4


    【解决方案1】:

    看来你在 js 中处理了错误的类选择器。例如

    错误处理类选择器 $('.nav nav-pills nav-sidebar flex-column li').click(function(e) {

    正确处理类选择器 $('.nav.nav-pills.nav-sidebar.flex-column li').click(function (e) {

    $(document).ready(function () {
      $('.nav.nav-pills.nav-sidebar.flex-column li').click(function (e) {
        if ($(this).hasClass('has-treeview')) {
          $(this).toggleClass('menu-open');
        }
        e.preventDefault();
      });
    
    
    
      $('.nav.nav-treeview li a').click(function (e) {
        if ($(this).hasClass('nav-link')) {
          $('a').removeClass('active')
          $(this).addClass('active');
        }
        e.preventDefault();
      });
    
    });
    .nav {
      font-family: arial;
    }
    .nav .nav-item .nav-link{
      color: #000;
      text-decoration: none;
    }
    
    .nav .nav-item .nav-link.active{
      color: green;
      font-weight: bold;
    }
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    
    <ul class="nav nav-pills nav-sidebar flex-column" data-widget="treeview" role="menu" data-accordion="false">
    
      <li class="nav-item has-treeview">
        <a href="addnewCandidate" class="nav-link">
          <i class="nav-icon fas fa-tachometer-alt"></i>
          <p>
            Add new Candidate
            <i class="right fas fa-angle-left"></i>
          </p>
        </a>
    
        <ul class="nav nav-treeview">
    
          <li class="nav-item">
            <a href="addnewCandidate" class="nav-link">
              <i class="far fa-circle nav-icon"></i>
              <p>General Information</p>
            </a>
          </li>
    
    
          <li class="nav-item">
            <a href="educationInfo" class="nav-link">
              <i class="far fa-circle nav-icon" id="education"></i>
              <p>Education</p>
            </a>
          </li>
    
          <li class="nav-item">
            <a href="trainingInfo" class="nav-link">
              <i class="far fa-circle nav-icon"></i>
              <p>Training</p>
            </a>
          </li>
    
          <li class="nav-item">
            <a href="workExperienceInfo" class="nav-link">
              <i class="far fa-circle nav-icon"></i>
              <p>WorkExperience</p>
            </a>
          </li>
    
    
          <li class="nav-item">
            <a href="languageInfo" class="nav-link">
              <i class="far fa-circle nav-icon"></i>
              <p>Language</p>
            </a>
          </li>
        </ul>
      </li>
    </ul>

    【讨论】:

    • 我是在 MVC 模式下做的。我的系统目前的方式是:当我加载仪表板时,侧面导航栏位于 sidebar.php 文件中,我在其中添加了您提到的更改。但问题是这个sn-p中的类被改变了,但我的系统上没有。此外,在添加这些更新时,导航链接也不起作用。
    • 如果您在主文件中包含 sidebar.php,它将正常工作。我假设每次点击链接时都会加载 sidebar.php。你能分享我的代码来帮助你详细吗
    • 你可以使用stackblitz.com(临时)或git发布代码并分享给我。因为您与我共享的代码不足以帮助您。
    • 只需将答案部分中的 js 代码替换为我的代码,它对我来说工作正常。如果仍然对您没有帮助。把代码分享给我,让我试着帮助你
    • 谢谢大家。当我将 jquery 脚本保存在主布局文件中而不是模板中时,问题就解决了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-08
    • 1970-01-01
    • 2014-10-01
    • 2020-04-21
    • 2021-09-12
    • 1970-01-01
    • 2015-05-27
    相关资源
    最近更新 更多