javascript - 当用户再次单击下拉列表时,如何隐藏当前选定的 li 元素成为一个选项?

标签 javascript jquery html css

假设用户打开菜单并选择#4。当他在选择 #4 的情况下再次打开菜单时,菜单会理想地隐藏该 #4 选项(因为让该选项仍然存在似乎是多余的)。如何在代码中实现这一点?

http://jsfiddle.net/j8oawqL4/

HTML

<ul class="navbar cf">
                    <li>
                        <a href="#" class="ActiveListItem">Category</a>
                        <ul>
                            <li><a href="#">1</a></li>
                            <li><a href="#">2</a></li>
                            <li><a href="#">3</a></li>
                            <li><a href="#">4</a></li>
                            <li><a href="#">5</a></li>
                            <li><a href="#">6</a></li>
                            <li><a href="#">7</a></li>
                        </ul>
                    </li>
                </ul>
            </div>

CSS

ul.navbar {

  border-style:solid;
  border-width:1px; 
  border-color:#739FE0;
  width: 100px;                /*Widthchanger1*/
  border-radius: 4px;
  margin-left:0px;
  margin-right:0px;
  font-size:14px;
  height:33px;



}


ul.navbar li a.ActiveListItem {
    background:url(../images/downarrowblue.png) !important; 
    background-repeat: no-repeat !important;
    background-size: 10px 10px !important;
    background-position: 83px 13px !important;
    color:white; !important;
    background-color:#222 !important;
    padding:7.5px 0px !important; 
    font-weight:normal !important;
    margin-left:0px;         /*Widthchanger2, got the activeitem centered with list text this way*/
    margin-right:0px;
    border-radius: 4px;
    height:18px;
    width:100px;   /*kinda messes with width of text*/
     margin-bottom:1px;

}

ul.navbar li {

    position: relative;
    width:100px;                        /*Changes width of actual list*/
}

ul.navbar li a {
    display: block;
    color: white;
    padding:10px 5px;
    text-decoration:none;
    transition: all .1s ease-in;

}

ul.navbar li a:hover,
ul.navbar li:hover > a {
    /*background:black; */
    background:#739FE0;
    color:#FFFFFF;
    /*font-weight:600;*/
    /*border-bottom-color:#FFFFFF;
    border-bottom-style:solid;*/
    /*border-color:#FFFFFF;
    border-style:solid;
    border-width:1px; */

}

    ul.navbar li ul {
        margin-top: 0px;               /*Controls space from listdropdown to listchooser*/
        position: absolute;
        background: #222;
        font-size: 14px;
        /* min-width: 200px; */
        display: none;
        z-index: 99;
        box-shadow: inset 0 0px 3px rgba(0,0,0,.6),
        0 5px 10px rgba(0,0,0,.6);
    }

ol, ul { list-style: outside none none; }

.hidden { display: none; }

JS

$(function() {




  $('.navbar ul li a').click(function(){  
    $('.navbar > li:first-child > a').text($(this).text());
    $('.navbar > li > ul').addClass('hidden');
    $('.navbar li ul').slideToggle(100);
  });
  $('.navbar > li').mouseenter(function(){
    $(this).find('ul').removeClass('hidden');
  });
  $('.ActiveListItem').click(function(){        
    $('.navbar li ul').slideToggle(300);
  });    
});

最佳答案

添加带有样式的类以在点击时隐藏它,当它点击其他人时将其删除

JS

$('.navbar ul li a').click(function(event){  
  $('.navbar > li:first-child > a').text($(this).text());
  $('.navbar > li > ul').addClass('hidden');
  $('.navbar li ul').slideToggle(100);
  $('.navbar ul li.gone').removeClass("gone");
  $(event.taget).closest("li").addClass("gone")
});

CSS

.navbar ul li.gone { display: none; }

关于javascript - 当用户再次单击下拉列表时,如何隐藏当前选定的 li 元素成为一个选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30178521/

相关文章:

javascript - AngularJS依赖注入(inject)的顺序

javascript - 使用 Javascript 提交表单

javascript - Jquery group by td 具有相同的类

javascript - 加载页面时 jQuery load() 不工作

javascript - 如何创建 "Subscribe to Calendar"链接到适用于 Android 版 Google 日历的 ics 文件?

php - 如何修复php中以标签开头的变量

javascript - 创建一个类似 Flipboard 弹出窗口的 Jquery 动画

javascript - 如何根据包含滚动的调整大小更改 div 高度

javascript - 如何在 ngMaterial md-autocomplete 中过滤查询?

jquery - 使用动态表获取更改下拉列表的值