2012-10-31 107 views
0

我对我正在编写的一个小函数感到疯狂。jquery不适用css属性

该功能需要将容器的高度设置为与其中存在的最高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高度,我不明白为什么。

你能帮我找到问题吗?

我在做什么错在这里?

+1

你可以在'console.log(h)'后面试一下'console.log(base)'吗? – Korcholis

+0

我现在又试了一次,它返回“null”... –

+0

'''var cont = white,''white'来自哪里? – Nelson

回答

0

当应用高度或宽度与.css()添加PX后缀,像这样:

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

做同样的你的所有类似的电话。

另外,如果你想使用当前的语法只数,然后作为一个对象通过CSS属性.css(),像这样:

cont.css({'height': biggest}); 
+0

它应该没有它,虽然。 – Andy

+0

我也试过了,不是这个问题。我的全球变数中定义了 –

0

尝试console.logmouseenter回调内这些项目:

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

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

+0

。所有的变量都有明确的定义。 –

+0

如果你使用html结构设置[jsfiddle](http://jsfiddle.net/)或许更好 – Korcholis