javascript - 使用 JQuery 的可折叠列表

标签 javascript jquery collapsable

    <script>   
     $(document).ready(function(){
           var xml = "<root> \
                <method name='A'> \
                <childcall name='B'></childcall> \
                <childcall name='C'></childcall> \
                </method> \
                <method name='B'> \
                <childcall name='D'></childcall> \
                </method> \
                <method name='C'> \
                <childcall name='D'></childcall> \
                <childcall name='E'></childcall> \
                </method> \
                </root>";

            var data = $.parseXML(xml);
            console.log(data);
            $(data).find('method').each(function(){
                var name = $(this).attr('name');
                $('<div class="items"></div>').html('<a href="'+name+'">'+name+'</a>').appendTo('#page-wrap');
                $(this).children('childcall').each(function(){
                    name = $(this).attr('name');
                    $('<div class="items"></div>').html('<a href="'+name+'">'+name+'</a>').appendTo('#page-wrap');
                });
             });
      });

      </script>
<body>
    <div id="page-wrap"></div>
</body>

以上代码遍历 xml 并将项目打印为 - A B C B D C D E。 我想让它成为一个可折叠的列表,就像在给定的链接中一样:http://www.sendesignz.com/index.php/jquery/77-how-to-create-expand-and-collapse-list-item-using-jquery

关于如何使其可折叠的任何提示?

编辑:感谢您的帮助。抱歉,我不能接受不止一个答案是正确的。所以式流解也是正确的。

最佳答案

首先,您需要生成与该示例相同的 HTML(使用 ul 和 li 而不是 div)

$(data).find('method').each(function(){
    var hasChild = $(this).children('childcall').length > 0;
    curLi += '<li';
    curLi += ((hasChild) ? ' class="category plusimageapply">': '>');
    curLi += $(this).attr('name');
    if(hasChild){
        curLi += '<ul>';
         $(this).children('childcall').each(function(){
             var name = $(this).attr('name');
             curLi += '<li><a href="'+name+'">'+name+'</a></li>';
         });
        curLi += '</ul>';
    }
    curLi += '</li>';
 });
$('#test').append(curLi);

请注意,它可以被优化。

然后,你需要指明一些CSS(隐藏 child ,添加+和-等)

.category ul{display:none;}

最后,你需要应用他们的JS

$('li.category').click(function(event){
    if($(this).is('.plusimageapply')) {
        $(this).children().show();
        $(this).removeClass('plusimageapply');
        $(this).addClass('minusimageapply');
    }
    else
    {
        $(this).children().hide();
        $(this).removeClass('minusimageapply');
        $(this).addClass('plusimageapply');
    }
});

给出:http://jsfiddle.net/dujRe/1/

关于javascript - 使用 JQuery 的可折叠列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15922108/

相关文章:

javascript - 游戏 Screeps - IDE 集成

javascript - 了解以太坊 ERC20 token 创建代码

javascript只执行一次

javascript - 是否有适用于 iPhone 的 JQuery 插件可以通知用户其应用程序 "Bookmark"?

javascript - 可折叠列表似乎阻止了菜单列表的工作

javascript - meteor +物质化: collapsable in for each doesn't work

javascript - Phaser3 添加状态会引发错误。无法读取未定义的属性 'add'

jquery - 选择器输入 [name^= 不适用于更改选择

javascript - 如何在远程函数中传递两个值?

css - 可折叠 HTML5 <detail><summary> 适用于 FF 和 Chrome,但不适用于 IE 和 Edge