0

私が書いている小さな関数に夢中になっています。

この関数は、コンテナの高さをコンテナ内に存在する最高のUL(合計3 UL、絶対位置)に等しく設定する必要があります。2番目または3番目のULが最初のULよりも低い場合は、これらのULの高さを等しく設定します。最初のものに。

これは機能です:

function fixNavHeight() {
    var cont = white,
        arr = [];
        lis = $('nav li');

    lis.each(function() {
        var li = $(this);
        li.mouseenter(function() {
            var childrenHeight = $(this).find(secondaryNavigation).height();
            cont.css('height', childrenHeight);
            setHeight(childrenHeight);
        });
    });

    function setHeight(base) {
        arr = [];
        cont.find('ul').each(function() {
            if($(this).is(':visible')) {
                var h = $(this).height();
                console.log(h);
                if(h <= base) {
                    $(this).css('height', base);
                }
                arr.push(h);
                var biggest = Math.max.apply(null, arr);
                cont.css('height', biggest);
            }
        });
    }
}

すべて正常に動作しますが、ULがそれよりも低い場合base、cssの高さが設定されず、理由がわかりません。

問題を見つけるのを手伝ってもらえますか?

私がここで間違っていることは何ですか?

4

2 に答える 2

0

コールバックconsole.log内で次の項目を試してください。mouseenter

secondaryNavigation
$(this).find(secondaryNavigation)
$(this).find(secondaryNavigation).height()

secondaryNavigation定義されていることを確認してください。これはコードのどこからともなく(おそらく上記の数行)、アクセス可能である必要があります。

于 2012-10-31T12:30:19.940 に答える
0

次のように、 pxサフィックスを.css()追加して高さまたは幅を適用する場合:

cont.css('height', biggest +'px');

同様のすべての通話に対して同じことを行います。

または、現在の構文を数値だけで使用する場合は、次のように、css プロパティをオブジェクトとして に渡します.css()

cont.css({'height': biggest});
于 2012-10-31T11:37:56.153 に答える