首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jquery垂直导航- slideUp slideDown

问jquery垂直导航- slideUp slideDown
EN

Stack Overflow用户
提问于 2011-10-25 19:17:12
回答 3查看 1.1K关注 0票数 0

我使用这个html结构:

代码语言:javascript
复制
    <div id="products">
    <ul>
        <li class="selected"><a href="#">Item 1</a>
            <ul>
                <li><a href="#">Sub-Item 1 a</a></li>
                <li><a href="#">Sub-Item 1 b</a></li>
                <li><a href="#">Sub-Item 1 c</a></li>
            </ul>
        </li>
        <li><a href="#">Item 2</a>
            <ul>
                <li><a href="#">Sub-Item 2 a</a></li>
                <li><a href="#">Sub-Item 2 b</a></li>
            </ul>
        </li>
        <li><a href="#">Item 3</a>
            <ul>
                <li><a href="#">Sub-Item 3 a</a></li>
                <li><a href="#">Sub-Item 3 b</a></li>
                <li><a href="#">Sub-Item 3 c</a></li>
                <li><a href="#">Sub-Item 3 d</a></li>
            </ul>
        </li>
        <li><a href="#">Item 4</a>
            <ul>
                <li><a href="#">Sub-Item 4 a</a></li>
                <li><a href="#">Sub-Item 4 b</a></li>
                <li><a href="#">Sub-Item 4 c</a></li>
            </ul>
        </li>
    </ul>
</div>

下面是jquery代码:

代码语言:javascript
复制
    $(document).ready(function () {

    $("#products li").click(function() {
        if ($(this).attr('class') != 'selected') {
            $('#products li').removeClass('selected');
            $(this).addClass('selected');
            }
    });


    $("#products li").click(function() {
        $('#products li ul').slideUp();
        $('#products li.selected ul').slideDown();

    });

});

问题:

我只希望在第一级(< li >)的项目上具有上下滑动效果,而不是在子项上

另一个问题--如果列表项已经被选中,然后你点击它,它就会向上滑动,然后再向下滑动。如果列表项目已经被选中,那么你点击它时,它会向上滑动,然后再向下滑动。如果列表项目已经被class=“选中”,你点击它,它就会向上滑动,然后再向下滑动。(如果已经发生了,应该不会发生任何事情)

有人能帮我编写jquery代码吗?

EN

回答 3

Stack Overflow用户

发布于 2011-10-25 19:33:23

试试这个:

演示: http://jsfiddle.net/LEdgT/6/

代码语言:javascript
复制
$(document).ready(function () {
    $("#products > ul > li").click(function() {
        if ($(this).has('ul')) {
            if ($(this).hasClass('selected')) {
                $(this).removeClass('selected')
                       .find('ul').slideUp();
            }
            else {
                $(this).addClass('selected')
                       .find('ul').slideDown();
            }
        }
    });
});
票数 1
EN

Stack Overflow用户

发布于 2011-10-25 19:22:07

将您的选择器更改为$('#products > ul > li'),它将只选择直接的子项。

或者,您可以将整个代码更改为可读性更强、重复性更低的代码:

代码语言:javascript
复制
var $topLevelItems = $("#products > ul > li");

$topLevelItems.click(function() {
    if (!$(this).hasClass('selected')) {
        $topLevelItems.removeClass('selected')
                      .find('ul')
                      .slideUp();

        $(this).addClass('selected')
               .find('ul')
               .slideDown();
    }
});
票数 0
EN

Stack Overflow用户

发布于 2011-10-25 19:29:41

您可以使用:not选择器或.not执行此操作

代码语言:javascript
复制
    $('#products > li:not(.selected)').click(function() {
        $('#products li ul').slideUp();
        $('#products li.selected ul').slideDown();
    });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7888446

复制
相关文章

相似问题

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