2016-12-09 15 views
2

私はアコーディオンタイプのメニューのための簡単なスライドトグルを持っています。jQueryスライドトグル、どこでもアコーディオンタイプを閉じますか?

liは、そのli内に存在.sub-menuオープンスライドしますクリック.menu-item-has-childrenクラスがある場合:menu-item-has-childrenと別のクラスをクリックすると、それは1つのIを閉じること

$(".menu-item-has-children").unbind('click').click(function(){  
     $(".menu-item-has-children > a").toggleClass("sub-open"); 
     $(this).children(".sub-menu").slideToggle(); 
    }); 

がどのように私はそれを作るのですが私がちょうどクリックしたものが開きます。

本質的にアコーディオンで、新しいアコーディオンを開く前に既に折りたたんだ/開いているアコーディオンを閉じます。しかし、これらはページ内の他の場所に表示される可能性があります。たとえば、同じリストは表示されません。

+0

これまでに試したことはありますか?あなたの作業フィドルを追加することがあります – ScanQR

答えて

2

slideUp()他の子メニューmenu-itemの子メニューです。

$(".menu-item-has-children").unbind('click').click(function(){ 
    //Find other menu items 
    var otherMenuItems = $(".menu-item-has-children").not($(this)); 

    //Find children and perform Slideup sub-menus and remove sub-open class 
    otherMenuItems.children(".sub-menu").slideUp(); 
    otherMenuItems.children("a").removeClass("sub-open"); 

    $(this).children("a").toggleClass("sub-open"); 
    $(this).children(".sub-menu").slideToggle(); 
}); 
+0

ブリリアントは、ここでテストしていただきありがとうございます.. https://jsfiddle.net/ps70fo4c/彼らはすべて開いて起動するか、私はそれらをCSSで閉じて非表示にするのですか? – user4630

+0

@ user4630、https://jsfiddle.net/ps70fo4c/1/をご覧ください。 – Satpal

+0

ありがとうございました:) – user4630

関連する問題