代码之家  ›  专栏  ›  技术社区  ›  demoncoder

AddClass到父级不工作

  •  0
  • demoncoder  · 技术社区  · 6 年前

    有一个 a li 元素。我想加上 current 类到相关的 当用户单击 . 但是,我不知道该怎么做。

    $(".nav-link").on('click', function(e) {
      $(this).parent().toggleClass('current');
    })
    .nav-item.current {
      width: 300px;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/js/bootstrap.min.js"></script>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/css/bootstrap.min.css" />
    <ul class="nav nav-tabs" id="myTab" role="tablist">
      <li class="nav-item current">
        <a class="nav-link active" id="home-tab" data-toggle="tab" href="#home" role="tab" aria-controls="home" aria-selected="true">Home</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" id="profile-tab" data-toggle="tab" href="#profile" role="tab" aria-controls="profile" aria-selected="false">Profile</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" id="contact-tab" data-toggle="tab" href="#contact" role="tab" aria-controls="contact" aria-selected="false">Contact</a>
      </li>
    </ul>
    <div class="tab-content" id="myTabContent">
      <div class="tab-pane fade show active" id="home" role="tabpanel" aria-labelledby="home-tab">Home</div>
      <div class="tab-pane fade" id="profile" role="tabpanel" aria-labelledby="profile-tab">Profile</div>
      <div class="tab-pane fade" id="contact" role="tabpanel" aria-labelledby="contact-tab">Contact</div>
    </div>

    我试图使用切换,但当我再次单击A链接时,它会混乱。请帮帮我。谢谢您。

    密码笔- https://codepen.io/rae0724/pen/pZNQMK

    出于某些原因,如果我需要函数来检测 .nav-link 有课吗? .active ,然后添加 现在的 类到父级?我有什么办法可以做到吗?

    2 回复  |  直到 6 年前
        1
  •  5
  •   Nandita Sharma    6 年前

    查看更新的功能

       $(".nav-link").on('click', function(e) {
          $(".current").removeClass('current');
          $(this).parent().addClass('current');
        })
    

    我添加了 $(".current").removeClass('current'); 线。 您需要先从所有元素中删除当前类,然后再将其添加到所需元素中。

    $(".nav-link").on('click', function(e) {
      $(".current").removeClass('current');
      $(this).parent().addClass('current');
    })
    .nav-item.current {
      width: 300px;
    }
    <link rel="stylesheet prefetch" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/css/bootstrap.min.css">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/js/bootstrap.min.js"></script>
    <ul class="nav nav-tabs" id="myTab" role="tablist">
      <li class="nav-item current">
        <a class="nav-link active" id="home-tab" data-toggle="tab" href="#home" role="tab" aria-controls="home" aria-selected="true">Home</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" id="profile-tab" data-toggle="tab" href="#profile" role="tab" aria-controls="profile" aria-selected="false">Profile</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" id="contact-tab" data-toggle="tab" href="#contact" role="tab" aria-controls="contact" aria-selected="false">Contact</a>
      </li>
    </ul>
    <div class="tab-content" id="myTabContent">
      <div class="tab-pane fade show active" id="home" role="tabpanel" aria-labelledby="home-tab">Home</div>
      <div class="tab-pane fade" id="profile" role="tabpanel" aria-labelledby="profile-tab">Profile</div>
      <div class="tab-pane fade" id="contact" role="tabpanel" aria-labelledby="contact-tab">Contact</div>
    </div>

    更新的答案 (基于评论)

     $(".nav-link").on('click', function(e) {
          $(".current").removeClass('current');
          setTimeout(function() {
            $(".active").parent().addClass('current');
          }, 0);
    
        })
    

    $(".nav-link").on('click', function(e) {
      $(".current").removeClass('current');
      setTimeout(function() {
        $(".active").parent().addClass('current');
      }, 0);
    
    })
    .nav-item.current.当前{
    宽度:300px;
    }
    <link rel=“stylesheet prefetch”href=“https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/css/bootstrap.min.css”>
    <script src=“https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js”></script>
    <script src=“https://code.jquery.com/jquery-3.3.1.slim.min.js”></script>
    <script src=“https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js”></script>
    <script src=“https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/js/bootstrap.min.js”></script>
    <ul class=“nav nav tabs”id=“mytab”role=“tablist”>
    <li class=“nav item current”>
    <A class=“nav link active”id=“home tab”data toggle=“tab”href=“home”role=“tab”aria controls=“home”aria selected=“true”>主页</A>
    </li>
    <li class=“nav item”>
    <a class=“nav link”id=“profile tab”data toggle=“tab”href=“profile”role=“tab”aria controls=“profile”aria selected=“false”>配置文件</a>
    </li>
    <li class=“nav item”>
    <a class=“nav link”id=“contact tab”data toggle=“tab”href=“contact”role=“tab”aria controls=“contact”aria selected=“false”>联系人</a>
    </li>
    </ul>
    <div class=“tab content”id=“MyTabContent”>
    <div class=“tab pane fade show active”id=“home”role=“tabpanel”aria labelledby=“home tab”>主页</div>
    <div class=“tab pane fade”id=“profile”role=“tabpanel”aria labelledby=“profile tab”>配置文件</div>
    <div class=“tab pane fade”id=“contact”role=“tabpanel”aria labelledby=“contact tab”>联系人</div>
    </DIV>
        2
  •  0
  •   Girisha C    6 年前

    从所有同级移除类并添加到活动链接, 使用 $(this).parent().addClass('current').siblings().removeClass('current'); 要实现这一点,请检查下面的工作示例。

    $(".nav-link").on('click', function(e) {
      $(this).parent().addClass('current').siblings().removeClass('current');
    })
    .nav-item.current {
      width: 300px;
      border-bottom: 2px solid green
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <ul class="nav nav-tabs" id="myTab" role="tablist">
      <li class="nav-item current">
        <a class="nav-link active" id="home-tab" data-toggle="tab" href="#home" role="tab" aria-controls="home" aria-selected="true">Home</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" id="profile-tab" data-toggle="tab" href="#profile" role="tab" aria-controls="profile" aria-selected="false">Profile</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" id="contact-tab" data-toggle="tab" href="#contact" role="tab" aria-controls="contact" aria-selected="false">Contact</a>
      </li>
    </ul>
    <div class="tab-content" id="myTabContent">
      <div class="tab-pane fade show active" id="home" role="tabpanel" aria-labelledby="home-tab">Home</div>
      <div class="tab-pane fade" id="profile" role="tabpanel" aria-labelledby="profile-tab">Profile</div>
      <div class="tab-pane fade" id="contact" role="tabpanel" aria-labelledby="contact-tab">Contact</div>
    </div>