如何简化megamenu这个jQuery代码?

时间:2011-05-11 13:04:36

标签: jquery

您好我正在尝试简化此代码,但无法想出以哪种方式执行此操作,任何想法?它实际上是一个超级巨型

$(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);
            }
        }
    });
});

3 个答案:

答案 0 :(得分:0)

CSS:

.submenu-content
{
  display: none;
}

HTML:

<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的:

    $('#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);
    });

答案 1 :(得分:0)

首先,您可以整合您的CSS电话

$("#a-menu,#b-menu,#c-menu").css("display", "none");
$("#d-menu").fadeIn(750);

答案 2 :(得分:0)

这样的东西?

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);
    }
}