【问题标题】:Bootstrap tabs. Add border to current tab through jquery引导选项卡。通过jquery为当前选项卡添加边框
【发布时间】:2017-11-30 12:13:48
【问题描述】:

这里是引导标签:

      <!-- Nav tabs -->
  <ul class="nav nav-tabs" role="tablist">
    <li style="padding: 20px" role="presentation" class="active"><a href="#home" aria-controls="home" role="tab" data-toggle="tab">Home</a></li>
    <li style="padding: 20px" role="presentation"><a href="#profile" aria-controls="profile" role="tab" data-toggle="tab">Profile</a></li>
    <li style="padding: 20px" role="presentation"><a href="#messages" aria-controls="messages" role="tab" data-toggle="tab">Messages</a></li>
    <li style="padding: 20px" role="presentation"><a href="#settings" aria-controls="settings" role="tab" data-toggle="tab">Settings</a></li>
  </ul>

  <!-- Tab panes -->
  <div class="tab-content">
    <div role="tabpanel" class="tab-pane active" id="home">

        <h1>Hello World</h1>

    </div>
    <div role="tabpanel" class="tab-pane" id="profile">Hello</div>
    <div role="tabpanel" class="tab-pane" id="messages">Some text</div>
    <div role="tabpanel" class="tab-pane" id="settings">Second text</div>
  </div>

</div>
        </div>

当前选项卡使用引导 javascript 自动激活类。

所以我想通过 jquery 为当前选项卡添加边框:

$('li').click(function () {
     if ($(this).hasClass('active')) {
         $(this).addClass('border-add')
     }
 })

我做不到。因为这段代码效果不好。如果单击其中一个选项卡边框将出现在当前选项卡上。但是,如果我单击另一个选项卡,我第一次单击的选项卡边框不会消失。 伙计们告诉我如何实现它。提前谢谢!

【问题讨论】:

  • 我很困惑。当前选项卡已经通过 Bootstrap 的 JS 应用了.active。为什么要添加另一个类来应用这些样式,而不是将它们附加到 .active 并完全避免额外的 JavaScript?
  • 对不起!!!我太傻了。对不起。

标签: javascript jquery html css twitter-bootstrap


【解决方案1】:

这可以在没有 JQuery 的情况下使用类来完成

li.active{
 border: 1px solid black;
}

/* Latest compiled and minified CSS included as External Resource*/

/* Optional theme */
@import url('//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap-theme.min.css');

body {
    margin: 10px;
}
li.active{
 border: 1px solid black;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>

<!-- Nav tabs -->
  <ul class="nav nav-tabs" role="tablist">
    <li style="padding: 20px" role="presentation" class="active"><a href="#home" aria-controls="home" role="tab" data-toggle="tab">Home</a></li>
    <li style="padding: 20px" role="presentation"><a href="#profile" aria-controls="profile" role="tab" data-toggle="tab">Profile</a></li>
    <li style="padding: 20px" role="presentation"><a href="#messages" aria-controls="messages" role="tab" data-toggle="tab">Messages</a></li>
    <li style="padding: 20px" role="presentation"><a href="#settings" aria-controls="settings" role="tab" data-toggle="tab">Settings</a></li>
  </ul>

  <!-- Tab panes -->
  <div class="tab-content">
    <div role="tabpanel" class="tab-pane active" id="home">

        <h1>Hello World</h1>

    </div>
    <div role="tabpanel" class="tab-pane" id="profile">Hello</div>
    <div role="tabpanel" class="tab-pane" id="messages">Some text</div>
    <div role="tabpanel" class="tab-pane" id="settings">Second text</div>
  </div>

</div>
        </div>

【讨论】:

    【解决方案2】:

    你可能就在那儿。听起来您需要做的就是在添加之前删除 border-add

    $('li').click(function () {
      $('li.border-add').removeClass('border-add'); // remove from the one that has it first
      if ($(this).hasClass('active')) {
        $(this).addClass('border-add'); // then add the new one
      }
    })
    

    【讨论】:

    • 它首先删除类然后添加它。我必须点击它 2 次​​span>
    猜你喜欢
    • 2021-03-28
    • 1970-01-01
    • 1970-01-01
    • 2010-12-24
    • 1970-01-01
    • 2015-07-23
    • 1970-01-01
    • 2010-09-22
    • 2013-04-24
    相关资源
    最近更新 更多