2012-04-09 13 views
0

Ich habe ein einfaches Akkordeon-Menü erstellt. Mein Problem ist, wenn ich "Folder1" es öffnet, aber wenn ich es wieder zurück, sollte es zusammenbrechen .. Ich bin mit diesem fest und nicht in der Lage, jede Hilfe zu gehen ..Akkordeon Menü Probleme

JsFiddle - http://jsfiddle.net/nY2t7/

$(document).ready(function() { 


    $('#content >li').each(function(i){ 

     hideElements($(this)); 
    }); 

    $('#content').click(function(event) { 

     $x = $(event.target); 

     //check if the element is the root node if so then hide all other li's and reveal the current one 
     if($x.parent().is('ul#content')) { 

      if($x.is(':visible')) {  //check if its already expanded .. if so then collapse and return 
       $x.find('ul >li').slideUp(300 , function() { 
        **//return;** does not work 

       }); 
      } 

      $('#content ul>li').each(function(i){     
        collapseElements($(this)); 
      }); 
     } 


     if($x.is('li')) 
      $x.find('ul:first > li').slideToggle(300); 



    }); 


    function collapseElements(el) { 
     if(el.is(':visible')) { 
      el.slideUp(300); 
     } 

    } 

    function hideElements(elem) { 
     elem.find('ul >li').hide(); 

     //$($e >li).hide(); 
    } 
}); 

Antwort

0

Simplest Code, das funktioniert:

$('#content').click(function(event) { 
    var $el = $(event.target); 
    $el.find('ul:first > li').slideToggle(300);  
}); 

Obwohl es staatenlos ist, die eine schlechte Sache ist.

+0

danke alexander, aber warum ruft nicht Aufruf nach der Animation nicht funktioniert .. $ x.find ('ul> li'). SlideUp (300, function() { ** // zurück; ** funktioniert nicht }); – user1184100

+0

@ user1184100, Es funktioniert. Sie kehren jedoch von 'function() {}' zurück. Vergessen Sie nicht, als Antwort zu markieren. – Alexander