javascript - 如果显示 bootstrap 下拉列表,jQuery 在悬停在一定宽度上时添加类

标签 javascript jquery css twitter-bootstrap

我正在使用带下拉菜单的 Bootstrap 。我的 anchor 在悬停时有背景色。但是当下拉菜单显示时,我希望包含下拉菜单的父级失去背景颜色。

我的 HTML 是:

  <nav class="navbar navbar-default av-nav" role="navigation">
     <div class="container">
        <div class="navbar-header">
          <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
            <span class="sr-only"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
        </div>

        <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
          <ul class="nav navbar-nav nav nav-tabs">
                <li class="lia li1"><a href="#">Home</a></li>
                <li class="dropdown li2"><a class="dropdown-toggle" data-toggle="dropdown">About</a><span class="nav-arrow"></span>
                    <div class="dropdown-menu">
                        <ul>
                            <li><a href="#">Drop 1</a></li>
                            <li><a href="#">Drop 2</a></li>
                            <li><a href="#">Drop 3</a></li>
                        </ul>
                    </div>
                </li>
           </ul>
        </div><!-- /.navbar-collapse -->
    </div><!-- /.container -->
</nav>  

我的尝试:

    $( document ).ready(function() {
        var section = $('.av-nav .nav li a:hover');
        var width = section.width();
        if (width < 768)
            section.addClass('nobg');
    });

CSS:

.nobg {background: none!important;}


我的代码不起作用,我做错了什么?

最佳答案

您可以使用 bootstrap 为下拉列表提供的这些事件:

show.bs.dropdown :调用 show 实例方法时会立即触发此事件。

shown.bs.dropdown :当下拉列表对用户可见时触发此事件(将等待 CSS 转换完成)​​。

hide.bs.dropdown :当 hide 实例方法被调用时,这个事件会立即被触发。

hidden.bs.dropdown :当下拉列表完成对用户隐藏时触发此事件(将等待 CSS 转换完成)​​。

用法:

$('.dropdown').on('show.bs.dropdown', function () {
  // do something…
  // In your case
   var section = $('.av-nav .nav li a:hover');
    var width = section.width();
    if (width < 768){
        section.addClass('nobg');}
})
$('.dropdown').on('hide.bs.dropdown', function () {
      // do something…
      // In your case
       var section = $('.av-nav .nav li a:hover');
        var width = section.width();
        if (width < 768){
            section.removeClass('nobg');}
    })

我想这会奏效,不过您可能需要做一些更改。

关于javascript - 如果显示 bootstrap 下拉列表,jQuery 在悬停在一定宽度上时添加类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30480630/

相关文章:

javascript - 为什么我无法在 Javascript Date 对象上使用 getDay() 方法和 getUTCDay() 方法获得相同的结果

javascript - 两个不相等的相同字符串

html - 如何随着增加圆圈内的文字而增加一个圆圈?

css - 元素出现在同一行

html - 试图定位与高度相关的边界

javascript - 如何在 jade 文件中使用 .js 文件中的函数?

javascript - 使用显示模块模式时如何在 Eclipse 中查看大纲?

jquery - 如何取消jqGrid单元格编辑操作

jquery - 模态窗口隐藏在标题后面?

jquery - 无法将图像作为背景。手机版