2015-03-25 61 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