使用jQuery显示和隐藏嵌套列表切换

时间:2013-01-23 18:05:14

标签: jquery list nested hide show

我在显示和隐藏嵌套列表的某些元素时遇到了一些问题。我的HTML代码如下:

<ul class="unstyled">
        <li onClick="foo();">INFO 1234 - Some Code Subject
        <ul>
            <li class="sem_hide">Semester 1
            <li class="sem_hide">Semester 2
            <li class="sem_hide">Semester 3
        </ul>
        <li onClick="foo();">INFO 4567 - Some DB Subject
        <ul>
            <li class="sem_hide">Semester 1
            <li class="sem_hide">Semester 2
            <li class="sem_hide">Semester 3
        </ul>
</ul>

我的JavaScript看起来像这样:

<script>
        function foo()
        {
            if($('li .sem_hide').is(":visible"))
            {
                $('li .sem_hide').hide();
            }
            else 
            {
                $('li .sem_hide').show();
            }
        }
</script>
<script type="text/javascript" src="js/jquery.js"></script>

我的CSS就像这样:

<style>
    body{
        width: 600px;
        margin-left: auto;
        margin-right: auto;
        background: #efefef;
    }

    li .sem_hide{
        display: none;
    }

</style>

我是网络开发的新手,目前正面临一个问题,就是当我点击一个主题时,会显示所有主题的所有学期,但我想要的只是所显示的点击主题的学期。是否有解决方法来获得我想要的东西?

感谢。

2 个答案:

答案 0 :(得分:1)

<ul class="unstyled">
    <li class = 'subject'>INFO 1234 - Some Code Subject
    <ul class = "semList>
        <li>Semester 1</li>
        <li>Semester 2</li>
        <li>Semester 3</li>
    </ul>
    <li class = "subject">INFO 4567 - Some DB Subject
    <ul class ='semList'>
        <li>Semester 1</li>
        <li>Semester 2</li>
        <li>Semester 3</li>
    </ul>
</ul>

<script>
    $(document).ready(function(){
        $(".subject").click(function(){
            $(".semList").hide();
            $(this).next(".semList").show();
        });
</script>

答案 1 :(得分:0)

在使用之前添加jQuery,将其在foo中传递给指向源对象。

<script>
        function foo(obj)
        {
            if($('.sem_hide', obj).is(":visible"))
            {
                $('sem_hide', obj).hide();
            }
            else 
            {
                $('.sem_hide', obj).show();
            }
        }
</script>
<li onClick="foo(this);">
相关问题