2015-03-25 60 views
0

代码:如何从按钮删除活跃的时候打开其他按钮

<li class="submenuList item-with-ul selected"> 
     <a href="#">Blalab</a> 
     <ul class="sub-nav flexnav-show" style="display: block;"> 
     <li><a href="#">Highlights</a></li> 
     <li><a href="#">Invited</a></li> 
     <li><a href="#">Talks</a></li> 
     </ul> 
    <span class="touch-button active"><i class="fa fa-chevron-down navicon"></i></span> 
    </li> 

脚本:

$('.touch-button').on('click', function(e) { 
     var $touchButton; 

     $touchButton = $(this).parent('.item-with-ul').find('>span.touch-button'); 

     $parent = $(this).parent('.item-with-ul'); 

     $(".flexnav ul").removeClass('flexnav-show').hide(); 

     $(this).parent().not('.selected').addClass('selected'); 
     $('.selected').removeClass('selected'); 

     //couldn't figure how to remove active from touch-button and add active as so to close and open the submenu 
     //$(this).removeClass('active'); 
     // $touchButton.removeClass('active'); 
}); 

托管删除/添加时,选择点击按钮,其他子菜单列表。但是当点击下一个子菜单列表中的下一个按钮时,按钮仍处于活动状态。单击下一个按钮时,无法获取要删除或添加的活动。

不知道为什么它不工作(见注释行)

+0

你可以发布小提琴吗? – 2015-03-25 06:39:00

回答

0

试试这个简单,

$('.touch-button').on('click', function(e) { 
    $('.touch-button').removeClass('active');// remove active from all touch-button 
    $(this).addClass('active'); // current touch button is active only now 
)}; 

我想你需要的是,

$('.touch-button').on('click', function(e) { 
    $('.touch-button').removeClass('active'); 
    $('.item-with-ul').removeClass('selected'); 
    $('.flexnav-show').hide(); 
    $(this).addClass('active') // make current touch button active 
      .closest('.flexnav-show').show() // show the closest ul 
      .closest('.item-with-ul').addClass('selected'); //add the selected class to list item 
}); 
+0

几乎没有,因为当两次点击相同的按钮时,它不会显示选定的类,例如。同时,点击下一个按钮时,它也不会显示子菜单 – joe 2015-03-25 07:51:17

0

尝试这样

$('.touch-button').on('click', function(e) { 
$(this).removeClass('active'); 
}); 
0

使用e.stopImmediatePropagation();

$(document).ready(function(e){ 
    e.stopImmediatePropagation(); 
$('.touch-button').removeClass('active');// remove active from all touch-button 
$(this).addClass('active'); // current touch button is active only now 

}); 
+0

抱歉,但它不起作用。它不打开和关闭子菜单 – joe 2015-03-25 07:52:33