Javascript 如何切换按钮更改颜色仅我的折叠在引导3导航栏中打开

Javascript 如何切换按钮更改颜色仅我的折叠在引导3导航栏中打开,javascript,jquery,html,css,twitter-bootstrap,Javascript,Jquery,Html,Css,Twitter Bootstrap,当我们打开折叠按钮时,按钮会改变颜色。但是,当我们通过单击按钮关闭“折叠”时,按钮不会返回其初始颜色。按钮已聚焦。我想让它失去焦点 我尝试过css:focus,但它在被按钮关闭后并没有失去焦点。 我认为jquery功能是必要的,虽然我已经尝试过了,但我的js技能还不够 我需要帮助 我的Html代码: <div class="wrapper"> <div class="navbar navbar-default" role="navigation">

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

我尝试过css:focus,但它在被按钮关闭后并没有失去焦点。 我认为jquery功能是必要的,虽然我已经尝试过了,但我的js技能还不够

我需要帮助

我的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>
我的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
状态一旦单击,它就不会失去焦点,除非再次单击外部。您可以尝试以下方法:

首先创建一个类,复制按钮的
悬停
焦点
状态:

.highlight {background:#ddd}
然后,您可以修改Jquery,强制按钮在
单击上失去焦点状态,并应用类以保持视觉效果:

$('.navbar-toggle').click(function() {
      $(this).toggleClass('highlight').blur();
});
此外,由于每次单击按钮外侧时折叠都会关闭,因此需要在按钮外侧添加一些折叠:

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

尝试此CSS。。。a


但它正在改变。。。。你的意思是在悬停时不改变?点击后不更改?点击后不更改关闭折叠在切换按钮中再次:),您可以在这里澄清吗?它甚至不在引导网站中它自己当我们打开折叠时,按钮更改颜色。但是,当我们通过单击按钮关闭“折叠”时,按钮不会返回其初始颜色。按钮已聚焦。我想让它失去焦点,谢谢。连这个都是!奶酪!:)Np mate很乐意帮助您这是一个CSS按钮问题,可以通过引导方式修复,而无需jQuery@hsobhy这就是为什么你投我反对票?如果您的解决方案看起来不错,那么在单击之后仍然可以看到焦点状态。仍然有边界,不建议为了可用性而将边界去掉。由于OP已经在使用Jquery,这是一个很好的解决方案:)感谢您提供的宝贵信息。每一篇文章我都在这里学习。对于边界,这仍然是一个可能的更改问题。谢谢。这是解决我问题的最好办法!奶酪!:)欢迎。。将一直持续到你完成。。继续发帖:)@user3216077如果你觉得这个解决方案不错,点击后你仍然会看到焦点状态。仍然有边框,不建议为了可用性而去掉边框。此解决方案有一个错误,在使用按钮关闭collpase后,按钮:hover被禁用,因为de nem focus处于活动状态。为此,丹科的灵魂是最好的。但在html中对类进行修改时,由于按钮的条纹,click有一个bug。谢谢各位:)只需添加。导航栏默认按钮。导航栏切换。折叠:悬停到第二种情况。。我已经更新了JS和CSS的代码。。。代码
if (_opened === true && !clickover.hasClass("navbar-toggle")) {
     $('.navbar-toggle').toggleClass('highlight'); /**Add This**/
     CloseNav();
}
.navbar-default button.navbar-toggle.collapsed:focus,
.navbar-default button.navbar-toggle.collapsed{ background-color: transparent;
    -webkit-transition:all .4s;
    -moz-transition:all .4s;
    -ms-transition:all .4s;
    -o-transition:all .4s;
    transition:all .4s;
}
.navbar-default button.navbar-toggle:focus,
.navbar-default button.navbar-toggle.collapsed:hover{ background-color:#ddd;
    -webkit-transition:all .4s;
    -moz-transition:all .4s;
    -ms-transition:all .4s;
    -o-transition:all .4s;
    transition:all .4s;
}