0

簡単なアコーディオン メニューを作成しました。私の問題は、「Folder1」をクリックすると展開されますが、もう一度クリックすると折りたたまれてしまうことです。

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(); 
    }
});
4

1 に答える 1

0

動作する最も単純なコード:

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

とはいえ、ステートレスなのは悪いことです。

于 2012-04-09T07:32:42.003 に答える