2

これはフィドルです: http://jsfiddle.net/Ywq8G/

誰かが私に言うことができるのだろうか:サブメニュー(緑色のもの)をクリックした後にメニュー1がちらつくのはなぜですか、他の2つは問題なく動作しますが、デバッグはどこにも行きません。読むだけで)貢献して、特定の質問をしてもよろしいですか。

このソリューションによって、私がより優れた開発者になり、他の人が私が遭遇した問題を回避できるようになることを願っています。

var MENU_HEIGHT = 110; 


$(document).ready(function () { 
    var menuCollection = {}
    var i = 1;
    $(".menu").children().each(function () {
        menuCollection[i] = [];
        $(".subMenu" + i).children().each(function () {
            menuCollection[i].push(this);
        });
        i++;
    });

    function scroll(menu, item, status) {
        if (item < menu.length) {
            var currentChild = menu[item];
            if (status == "scrollOut") {
                $(currentChild).stop().animate({
                    top: MENU_HEIGHT + 80 * item
                }, {
                    queue: false,
                    duration: 600
                }) {
                    scroll(menu, item + 1, status);
                };
            } else {
                $(currentChild).stop().animate({
                    top: 0
                }, {
                    queue: false,
                    duration: 600
                }) {
                    scroll(menu, item + 1, status);
                };
            }
        }
    }
    var ii = 1;
    $(".menu").children().each(function () {
        var target = $(this).attr('class');
        var menu = menuCollection[ii];

        $("." + target + ", .subMenu" + ii + " > a").bind("mouseover", function () {
            doScroll(menu, 0, "scrollOut");
        });
        $("." + target + ", .subMenu" + ii + " > a").bind("mouseout", function () {
            doScroll(menu, 0, "scrollIn");
        });
        ii++;
    });


    function doScroll(menu, item, status) {
        scroll(menu, item, status);
    }

    $("a").click(function (event) {
        var href = $(this).attr('href');
        href = href.substring(1);

        $(".current").appendTo(".hidden");
        $(".current").removeClass("current");


        $("." + href).addClass("current");
        $("." + href).appendTo(".main");

        $('html, body').animate({
            scrollTop: $(".main").offset().top
        }, 600);
    });
});
4

1 に答える 1