2014-04-04 71 views
0

我創建了一個JavaScript切換菜單:的JavaScript切換菜單崩潰的問題

$(document).ready(function() { 
    $('.toggle').click(function() { 
     if ($(this).hasClass("expanded")) { 
      $(this).next().slideUp("fast"); 

     } else { 
      $('.toggle').next().slideUp("fast").removeClass("expanded"); 
      $(this).next().slideDown("fast"); 
      $(this).removeClass("collapsed"); 
      $(this).addClass("expanded"); 
     } 
    }); 
}); 

當我點擊菜單中的其他項目,類別「擴張」是不是從其他元素中刪除。我嘗試了許多不同的東西,但無法擺脫困境。任何幫助,將不勝感激。

回答

1
$(document).ready(function() { 
    $('.toggle').click(function() { 
     if ($(this).hasClass("expanded")) { 
      $(this).next().slideUp("fast"); 
      $(this).addClass('collapsed'); 
      $(this).removeClass('expanded'); 
     } else { 
      var $expandedItems = $('.expanded'); 
      $expandedItems.next().slideUp("fast") 
      $expandedItems.addClass('collapsed'); 
      $expandedItems.removeClass('expanded'); 
      $(this).next().slideDown("fast"); 
      $(this).removeClass("collapsed"); 
      $(this).addClass("expanded"); 
     } 
    }); 
}); 

根據你的意見,我認爲你是在這樣的事情之後。

+0

很棒 - 謝謝你的幫助! – lauw0203

1
$(document).ready(function() { 
    $('.toggle').click(function() { 
     if ($(this).hasClass("expanded")) { 
      $(this).next().slideUp("fast"); 

     } else { 
      $('.expanded').removeClass('expanded');//here is your problem 
      $(this).next().slideDown("fast"); 
      $(this).removeClass("collapsed"); 
      $(this).addClass("expanded"); 
     } 
    }); 
}); 

這應該是從你的jQuery代碼刪除擴展類

注意測試雖然請告訴我,如果它不工作

更新

Demo

而jQuery的,我認爲你缺少太多的信息在這裏檢查演示Demo

+0

當單擊另一個項目時,該解決方案不會摺疊其他項目,並且在再次單擊該項目時不會向該項目添加「摺疊」類。 – lauw0203

+0

但你不會在任何地方添加collidden類?這將如何實現 –

+0

這些項目已被稱爲「摺疊」,因此「展開」會在點擊時替換該類別名稱。我需要做的是在點擊另一個項目時將「摺疊」添加到項目中。 – lauw0203