1

我有这种菜单结构:

<ul id="accordion">
 <li><a href="#">Books</a>
  <ul>
    <li><a href="thrillers.html">Thrillers</a></li>
    <li><a href="scifi.html">Sci-fi</a></li>
    <li><a href="nf.html">Non-fiction</a></li>
  </ul>
 </li>
 <li><a href="#">Games</a>
  <ul>
    <li><a href="rpg.html">RPG</a></li>
    <li><a href="sim.html">Simulations</a></li>
    <li><a href="action.html">Action</a></li>
  </ul>
 </li>
</ul>

(ETC。)

现在,我们点击“RPG”我希望在 RPG 页面上打开游戏子菜单。因此,我决定向所选的 LI 添加一个类:

...
<ul>
  <li class="active"><a href="rpg.html">RPG</a></li>
  <li><a href="sim.html">Simulations</a></li>
  <li><a href="action.html">Action</a></li>
</ul>
...

现在,我想做的是让 jQuery 找到带有 class="active" 的 UL,然后打开该 UL。

我只是这个jQuery:

<script>

$(document).ready(function () {

    //hide all submenu's onLoad
    $('#accordion li').children('ul').slideUp('fast');  

    $('#accordion a.item').click(function () {

        /* FIRST SECTION */

        //slideup or hide all the Submenu
        $('#accordion li').children('ul').slideUp('fast');  

        //remove all the "Over" class, so that the arrow reset to default
        $('#accordion a.item').each(function () {
            if ($(this).attr('rel')!='') {
                $(this).removeClass($(this).attr('rel') + 'Over');  
            }
        });

        /* SECOND SECTION */        

        //show the selected submenu
        $(this).siblings('ul').slideDown('fast');

        //add "Over" class, so that the arrow pointing down
        $(this).addClass($(this).attr('rel') + 'Over');         

        return false;

    });

});

</script>

在 onLoad 部分之后我需要什么才能只有我想要打开的那个?

4

2 回答 2

2

这可能会有所帮助:

$('#accordion > li > ul > li.active').parent().slideDown('fast');
于 2013-05-06T06:13:37.233 回答
2

尝试让直接子>活动 li:

$(document).ready(function () {
    $('#accordion li').children('ul').slideUp('fast'); //<--hide all child uls
    $('#accordion > li').click(function () { ///<---perform a click event on li
        $(this).addClass('active').siblings('li').removeClass('active'); //<--add active class to the clicked element and remove from other siblings li
        $(this).siblings('li').find('ul').slideUp('fast'); // <---find the ul in the siblings and slide those up
        $('> ul', this).slideDown('fast'); // <--then perform the slideDown
    });
});

FIDDLE DEMO你可以试试这个。

于 2013-05-06T06:29:43.440 回答