正在显示所有子菜单项

时间:2017-07-29 13:38:18

标签: javascript html css

我正在尝试创建类似于sample link

的导航菜单

我从头开始创建了一个基于jquery和css的导航菜单,它应该显示如上面链接所示的下拉菜单。我想实现下拉菜单中显示的下拉样式。

我创建了4个深度级菜单,当我打开所有菜单项时,当我点击第一个深度菜单项时,所有菜单项都会显示到深度4级。

点击menu-item1> menu-item1.2> menu-item1.2.2> menu-item1.2.2.2

现在点击menu-item1.2两次(显示所有子项而不是menu-item1.2.1和menu-item1.2.2)

我在哪里做错了?

$(document).ready(function(){
  
  $('.menu-item').click(function(event){
    event.stopPropagation();
    $(this).toggleClass('active');
    $('.col ul li').removeClass('active');
    
  });
  
  
  $('.col ul li').click(function(event){   
 
    event.stopPropagation();
    $(this).toggleClass('active');    
     $('.col ul li ul').removeClass('active');
  });
  
  
  $('.col ul li ul').click(function(event){   
 
    
    $(this).toggleClass('active');
  });
  
   $('.col ul ul li ul').click(function(event){   

    $(this).toggleClass('active');
  });
 
});
.menu>li {
  display: inline-block;
  padding: 10px 20px;
}

.dropdown > .col {
  display: none;
}

.visible {
  display: block;
}

.col {  
  position: absolute;
  top: 100px;
  display: block;
}

.sub-col {
  position: absolute;
  left: 150px;
  top: 0;
   display: none;
  
}


.sub-sub-col {
  position: absolute;
  left: 150px;
  top: 0;
   display: none;
}
.sub-sub-sub-col {
  position: absolute;
  left: 150px;
  top: 0;
   display: none;
  
}

.active .col {
  display: block;
}
.col .active .sub-col{
  display: block;
}

.col .sub-col .active .sub-sub-col {
  display: block;
}
 .col .sub-col .sub-sub-col .active .sub-sub-sub-col{
  display: block;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="menu">
  <li class="menu-item"><a href="#">Menu-item-1</a>
    <div class="dropdown">
      <div class="col">
        <ul>
            <li>menu-item: 1.1</li>

            <li>menu-item: 1.2        
              <div class="sub-col">
                <ul>
                    <li>menuitem1.2.1</li>
                    <li>menuitem1.2.2
                      <div class="sub-sub-col">
                        <ul>
                            <li>menuitem1.2.2.1</li>
                            <li>menuitem1.2.2.2
                              <div class="sub-sub-sub-col">
                                <ul>
                                    <li>menuitem1.2.2.2.1</li>
                                    <li>menuitem1.2.2.2.2</li>
                                </ul>
                              </div>
                          </li>
                        </ul>
                      </div><!--sub-sub-col-->
                    </li>   
                </ul>
              </div><!--sub-col-->
            </li>

        </ul>
      </div>  <!--col-->  
  </div><!--dropdown-->
    
  </li>
  <li class="menu-item"><a href="#">Menu-item-2</a></li>
</ul>

1 个答案:

答案 0 :(得分:0)

尝试这个

.col ul ul li更改为.col ul li ul并将.col ul ul ul li更改为.col ul ul li ul

$(document).ready(function() {

  $('.menu-item').click(function(event) {
    event.stopPropagation();
    $(this).toggleClass('active');
    $('.col ul li').removeClass('active');

  });


  $('.col ul li').click(function(event) {

    event.stopPropagation();
    $(this).toggleClass('active');

  });


  $('.col ul li ul').click(function(event) {


    $(this).toggleClass('active');
  });

  $('.col ul ul li ul ').click(function(event) {

    $(this).toggleClass('active');
  });
});
.menu>li {
  display: inline-block;
  padding: 10px 20px;
}

.dropdown>.col {
  display: none;
}

.visible {
  display: block;
}

.col {
  position: absolute;
  top: 100px;
  display: block;
}

.sub-col {
  position: absolute;
  left: 150px;
  top: 0;
  display: none;
}

.sub-sub-col {
  position: absolute;
  left: 150px;
  top: 0;
  display: none;
}

.sub-sub-sub-col {
  position: absolute;
  left: 150px;
  top: 0;
  display: none;
}

.active .col {
  display: block;
}

.col .active .sub-col {
  display: block;
}

.col .sub-col .active .sub-sub-col {
  display: block;
}

.col .sub-col .sub-sub-col .active .sub-sub-sub-col {
  display: block;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="menu">
  <li class="menu-item"><a href="#">Menu-item-1</a>
    <div class="dropdown">
      <div class="col">
        <ul>
          <li>menu-item: 1.1</li>

          <li>menu-item: 1.2
            <div class="sub-col">
              <ul>
                <li>menuitem1.2.1</li>
                <li>menuitem1.2.2
                  <div class="sub-sub-col">
                    <ul>
                      <li>menuitem1.2.2.1</li>
                      <li>menuitem1.2.2.2
                        <div class="sub-sub-sub-col">
                          <ul>
                            <li>menuitem1.2.2.2.1</li>
                            <li>menuitem1.2.2.2.2</li>
                          </ul>
                        </div>
                      </li>
                    </ul>
                  </div>
                  <!--sub-sub-col-->
                </li>
              </ul>
            </div>
            <!--sub-col-->
          </li>

        </ul>
      </div>
      <!--col-->
    </div>
    <!--dropdown-->

  </li>
  <li class="menu-item"><a href="#">Menu-item-2</a></li>
</ul>