首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jquery上滑菜单

问jquery上滑菜单
EN

Stack Overflow用户
提问于 2012-08-16 18:29:08
回答 3查看 1.3K关注 0票数 1

我想先隐藏所有的子菜单,然后点击span.expand,所有的子菜单都会显示出来。

这是我的HTML:

代码语言:javascript
复制
<div class="ym-gbox">
    <ul>
        <li>menu1</li>
        <li>menu2</li>
        <ul>
            <li>submenu1</li>
            <li>submenu2</li>
        </ul>
        <ul>
            <li>submenu1</li>
            <li>submenu2</li>
        </ul>  
    </ul>
</div>

<div id="expandbutton">
    <span class="button expand">expand</span>
</div>

和我的jQuery:

代码语言:javascript
复制
jQuery(document).ready(function($) {
    $('.ym-gbox ul li ul li').hide();

        $('.expand').click(function() {
        if ($(this).hasClass('act')) {
            $(this).removeClass('act');
            $('.ym-gbox ul li').not('.menuactive').children('ul').children('li').slideUp('fast');
        } else {
            $(this).addClass('act'); 
            $('.ym-gbox ul li ul li').slideDown('fast');  
        }

    });
});

我哪里做错了?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-16 18:46:15

您的选择器没有选择您期望的元素,我已经修改了标记,请尝试以下操作:

代码语言:javascript
复制
<div class="ym-gbox">
    <ul>
        <li class='expand'>menu1</li>
        <ul>
            <li>submenu1</li>
            <li>submenu2</li>
        </ul>
        <li class='expand'>menu2</li>
        <ul>
            <li>submenu1</li>
            <li>submenu2</li>
        </ul>
    </ul>
</div>
代码语言:javascript
复制
jQuery(document).ready(function() {
    $('.ym-gbox > ul ul').hide();
    $('.ym-gbox li.active').next().show();

    $('.expand:not(.active)').click(function() {
         $(this).addClass('active').siblings('li').removeClass('active')
         $(this).siblings('ul').slideUp();
         $(this).next('ul').slideDown()                
    });
});

http://jsfiddle.net/U5P5Y/

票数 1
EN

Stack Overflow用户

发布于 2012-08-16 18:35:08

这是因为你有无效的html。应该是这样的:

代码语言:javascript
复制
<div class="ym-gbox">
    <ul>
        <li>menu1
            <ul>
                <li>submenu1</li>
                <li>submenu2</li>
            </ul>  
        </li>
        <li>menu2
            <ul>
                <li>submenu1</li>
                <li>submenu2</li>
            </ul>
        </li>
    </ul>
</div>

<div id="expandbutton">
    <span class="button expand">expand</span>
</div>​

代码:http://jsfiddle.net/HCE9j/4/

票数 0
EN

Stack Overflow用户

发布于 2012-08-16 18:37:32

为什么不给你的子菜单一个自己的id,并调用如下代码:

代码语言:javascript
复制
$(".expand").toggle(function(e){
 $("#submenu).slideUp("slow");
}, function(){
 $("#submenu").slideDown("slow");
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11985261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档