javascript - 如何我的切换按钮更改颜色只有我的折叠在我的 bootstrap 3 导航栏中打开

标签 javascript jquery html css twitter-bootstrap

当我们打开折叠时,按钮会改变颜色。但是当我们通过单击按钮关闭折叠时,按钮不会返回到其初始颜色。按钮被聚焦。我希望它失去焦点。

我尝试过使用 css :focus,但在通过按钮关闭折叠后它并没有失去焦点。 我认为jquery函数是必要的,虽然我已经尝试过,但我的js技能应该不够。

我需要帮助

Demo

我的 HTML 代码:

    <div class="wrapper">
  <div class="navbar navbar-default" role="navigation">
        <div class="navbar-header">
          <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a class="navbar-brand" href="#">Project name</a>
        </div>
        <div class="navbar-collapse collapse">
          <ul class="nav navbar-nav">
            <li class="active"><a href="#">Link</a></li>
            <li><a href="#">Link</a></li>
            <li><a href="#">Link</a></li>
            <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
              <ul class="dropdown-menu">
                <li><a href="#">Action</a></li>
                <li><a href="#">Another action</a></li>
                <li><a href="#">Something else here</a></li>
                <li class="divider"></li>
                <li class="dropdown-header">Nav header</li>
                <li><a href="#">Separated link</a></li>
                <li><a href="#">One more separated link</a></li>
              </ul>
            </li>
          </ul>
          <ul class="nav navbar-nav navbar-right">
            <li class="active"><a href="./">Default</a></li>
            <li><a href="../navbar-static-top/">Static top</a></li>
            <li><a href="../navbar-fixed-top/">Fixed top</a></li>
          </ul>
        </div><!--/.nav-collapse -->
      </div>

</div>

我的 CSS 代码:

.wrapper {width:100%, height:100%;} 

我的 jQuery 函数:

    $(document).ready(function () {
    function CloseNav() {
        $(".navbar-collapse").stop().animate({'height': 0},300, function () {
            $('.navbar-collapse').removeClass('in').addClass("collapse");
        });
        $(".navbar-toggle").stop().removeClass('collapsed');
    }

    $('html').click(function (event) {
        var clickover = $(event.target);
        var _opened = $(".navbar-collapse").hasClass("navbar-collapse in");
        if (_opened === true && !clickover.hasClass("navbar-toggle")) {
            CloseNav();
        }

    });
});

最佳答案

您好,这里的问题是按钮的 focus 状态,一旦您单击它就永远不会失去焦点,除非您再次单击外部。你可以试试这个:

首先创建一个类来复制按钮的 hoverfocus 状态:

.highlight {background:#ddd}

然后您可以修改您的 Jquery 以强制按钮在 click 时失去焦点状态并应用该类以保持视觉效果:

$('.navbar-toggle').click(function() {
      $(this).toggleClass('highlight').blur();
});

此外,由于每次在按钮外单击时折叠都会关闭,因此您需要在此处添加一些内容:

if (_opened === true && !clickover.hasClass("navbar-toggle")) {
     $('.navbar-toggle').toggleClass('highlight'); /**Add This**/
     CloseNav();
}

检查这个 Demo Fiddle

关于javascript - 如何我的切换按钮更改颜色只有我的折叠在我的 bootstrap 3 导航栏中打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21334226/

相关文章:

javascript - 单击时淡入元素并隐藏更多按钮(如果为空)

javascript - Canvas toDataURL 不会在第一次尝试时返回整个 URL

javascript - 将数组中的每个元素放在一个段落中

javascript - 保存具有 id 的元素的变量存储在哪里?

javascript - 来 self 的 app.meteor.com 的 Meteor.http.call()

javascript - 停止按下提交按钮,直到文本区域中写入足够的单词

javascript - 动态 Facebook 分享按钮

javascript - 使用 JavaScript 的移动 DOM 堆叠顺序

javascript - HTML Canvas 通过鼠标平移

javascript - 有没有办法更改嵌入式 YouTube 视频中的 slider 颜色?