首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery UI toggleClass

jQuery UI toggleClass
EN

Stack Overflow用户
提问于 2012-03-13 08:53:49
回答 4查看 178关注 0票数 0

我以前问过类似的问题,我已经看过几个类似的Q&,但它们都不符合我的要求(或者我根本不具备让它们工作的js知识!)。

我有一个使用jQuery UI toggleClass来显示和隐藏子菜单的simple css/jquery menu设置。

我想改进这一点,当另一个子菜单被点击时,关闭任何打开的子菜单。有人能给我解释一下怎么做吗?谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-03-13 09:11:28

将此代码添加到您的函数:

代码语言:javascript
复制
$(this).parent().siblings().find('ul:not(.navhidden)').addClass('navhidden', 'fast');

这是你的小提琴,更新:http://jsfiddle.net/abKhH/1/

P.S. @Colin的解决方案也适用,但我认为上面的解决方案更好一些,因为它同时打开和关闭面板。

票数 2
EN

Stack Overflow用户

发布于 2012-03-13 09:09:30

我在您的jQuery中添加了一行代码,用于确保在打开所单击的子菜单之前,所有的子菜单都已关闭。

jsfiddle

票数 0
EN

Stack Overflow用户

发布于 2012-03-13 09:20:16

反应有点慢,但有额外的答案也没什么坏处!编辑:这确实有轻微的性能提升,因为由于链接,它只运行$('#main-nav a.dd')选择器一次。如果您不熟悉,.end()通过转到前一个选择来取消.next()。

代码语言:javascript
复制
$('#main-nav a.dd').next().addClass('navhidden')
    .end().click(function() {
        $('#main-nav a.dd').not(this).next().each( function() {
            if ( !$(this).hasClass("navhidden") ) {
                $(this).addClass("navhidden");
            }
        });
        $(this).next().toggleClass('navhidden', 'fast');
        return false;
});

http://jsfiddle.net/6Qer7/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9676918

复制
相关文章

相似问题

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