2012-10-31 143 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