首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何简化megamenu这段jQuery代码?

如何简化megamenu这段jQuery代码?
EN

Stack Overflow用户
提问于 2011-05-11 21:04:36
回答 3查看 149关注 0票数 0

嗨,我正在试着简化这段代码,但是不知道该怎么做,有什么想法吗?它实际上是一个百万级的

代码语言:javascript
复制
$(function() {
    $('#globalnavigation').find("a").bind({
        click: function() {
            if (".submenu:hidden") {
                $(".submenu").css("display", "block");
            }
            if ($('a[href$="#a-menu"]')) {
                $(this).addClass("active");
                $("#services-menu").css("display", "none");
                $("#innovations-menu").css("display", "none");
                $("#insights-menu").css("display", "none");
                $("#professionals-menu").fadeIn(750);
            }
            if ($('a[href$="#b-menu"]')) {
                $(this).addClass("active");
                $("#professionals-menu").css("display", "none");
                $("#innovations-menu").css("display", "none");
                $("#insights-menu").css("display", "none");
                $("#services-menu").fadeIn(750);
            }
            if ($('a[href$="#c-menu"]')) {
                $(this).addClass("active");
                $("#services-menu").css("display", "none");
                $("#innovations-menu").css("display", "none");
                $("#professionals-menu").css("display", "none");
                $("#insights-menu").fadeIn(750);
            }
            if ($('a[href$="#d-menu"]')) {
                $(this).addClass("active");
                $("#services-menu").css("display", "none");
                $("#professionals-menu").css("display", "none");
                $("#insights-menu").css("display", "none");
                $("#innovations-menu").fadeIn(750);
            }
        }
    });
});
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-11 21:21:42

CSS:

代码语言:javascript
复制
.submenu-content
{
  display: none;
}

HTML:

代码语言:javascript
复制
<nav id="globalnavigation">         
    <ul>
        <li><a id="menu-item-a" href="#professionals-menu">Professionals</a></li>
        <li><a id="menu-item-b" href="#services-menu">Services</a></li>
        <li><a id="menu-item-c" href="#insights-menu">Insights</a></li>
        <li><a id="menu-item-d" href="#innovation-menu">Innovation</a></li>
    </ul>
</nav>

<section class="submenu" style="display: block;">
    ...
    <div class="submenu-content" id="submenu-content-a">
    <div class="submenu-content" id="submenu-content-b">
    <div class="submenu-content" id="submenu-content-c">
    <div class="submenu-content" id="submenu-content-d">
    ...
</section>

JavaScript:

代码语言:javascript
复制
    $('#globalnavigation').find("a").click(function () {
        $(this).addClass("active");        
        $('.submenu').show();
        $('.submenu-content').hide();

        var id = $(this).attr('id').replace('menu-item-', '');
        $('#submenu-content-' + id).fadeIn(750);
    });
票数 0
EN

Stack Overflow用户

发布于 2011-05-11 21:23:45

首先,您可以合并css调用

代码语言:javascript
复制
$("#a-menu,#b-menu,#c-menu").css("display", "none");
$("#d-menu").fadeIn(750);
票数 0
EN

Stack Overflow用户

发布于 2011-05-11 21:24:43

像这样的东西?

代码语言:javascript
复制
formatMenus('a[href$="#a-menu"]');
formatMenus('a[href$="#b-menu"]');

function formatMenus(selector)
{            
    if ($(selector)) 
    {
        $(this).addClass("active");
        $("#services-menu").css("display", "none");
        $("#innovations-menu").css("display", "none");
        $("#insights-menu").css("display", "none");
        $("#professionals-menu").fadeIn(750);
    }
}            
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5964719

复制
相关文章

相似问题

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