如何折叠嵌套的ul列表?

时间:2016-03-31 14:24:17

标签: jquery html

我有一个ul列表,如果我点击其他项目中的项目,则会切换:

public class ForumNamesAutocomplete extends AutoCompleteTextField {
    ListModel<String>myModel = new ListModel<String>();
    ...

    @Override
    protected boolean filter(String text) { 
        if(text.length() > 1){
            return false;
        }
        setSuggestionList(text);
        return true;
    }

    private void setSuggestionList(String s){
        if(myModel == null){
            myModel = new ListModel<String>();
        }else{
            while(myModel.getSize() > 0)
                myModel.removeItem(0);
        }
        for(int i = 0;i<fData.size();i++){
            boolean used = false;
            Map<String,Object> forumMap = fData.get(i);
            if(((String)forumMap.get(KEY_FORUM_NAME)).indexOf(s) != -1){
                myModel.addItem((String)forumMap.get(KEY_FORUM_NAME));
                used = true;
            }
            if(!used && ((String)forumMap.get(KEY_FORUM_DESC)).indexOf(s) != -1){
                myModel.addItem((String)forumMap.get(KEY_FORUM_NAME));
            }
        }
    }

    ...

}

这是剧本:

<ul>
    <li><a href "#">Hello World</a>

        <ul>
            <li><a href "#">Hello World</a>

            </li>
            <li><a href "#">Hello World</a>

                <ul>
                    <li><a href "#">Hello World</a>

                    </li>
                    <li><a href "#">Hello World</a>

                    </li>
                </ul>
            </li>
            <li><a href "#">Hello World</a>

            </li>
        </ul>
    </li>
    <li><a href "#">Hello World</a>

    </li>
    <li><a href "#">Hello World</a>

    </li>
    <li><a href "#">Hello World</a>

    </li>
</ul>

Here is the fiddle

我希望在页面加载时关闭所有“文件夹”。

我试着这样做:

$('li a').click(function (e) {
    e.preventDefault();
    var ullist = $(this).parent().children('ul:first');
    ullist.slideToggle();
});

但是只关闭了主“文件夹”,当我点击它时,所有其他文件夹都打开了。

2 个答案:

答案 0 :(得分:1)

要折叠所有列表,您可以在文档就绪时使用$('ul ul').hide()

答案 1 :(得分:0)

我有结果!需要将var ullist = $('li a').parent().children('ul:first');更改为var ullist = $('li a').parent().children('ul');