0

我正在为我正在编写的一个小函数而疯狂。

此函数需要将容器的高度设置为内部存在的最高 UL(总共 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

在应用高度或宽度时.css()添加px后缀,如下所示:

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

对所有类似的呼叫执行相同的操作。

或者,如果您想仅使用数字使用当前语法,则将 css 属性作为对象传递给.css(),如下所示:

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

尝试回调中的console.log这些项目:mouseenter

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

检查是否secondaryNavigation已定义。它来自代码中的任何地方(可能是上面的几行),它必须是可访问的。

于 2012-10-31T12:30:19.940 回答