2011-05-19 109 views
0

我想建立一個jquery下拉菜單,基本上我有左側導航,這是下拉菜單,我也有一個右側部分,我正在嘗試使左側導航的高度總是等於右側部分的高度, 它在頁面加載時工作正常,但是當我點擊左側導航欄上的鏈接時,它下面的產品將顯示,並且之前打開的產品將隱藏,但我獲得只要在第二部分隱藏之前點擊它,左邊的導航就會顯示,因此它給了我錯誤的高度,我想我必須等待click事件完成,然後計算高度,但我不知道如何那麼,jquery下拉菜單的問題

test site to show what I mean

如果你點擊女士服裝,然後男裝左側導航的高度不會增加,如果你點擊男裝然後女士服裝右容器變得太大的高度,

jQuery.noConflict(); 

jQuery(document).ready(function() { 
var level2 = jQuery('.nav-container ul#nav li.level0 ul.level0 li.level1 ul.level1 li.level2 > a'); 

    level2.click(function(e) { 
     e.preventDefault(); 
     var navId = jQuery(this).parent().attr('class').substr(7,9); 
     jQuery('.nav-container ul#nav li.level0 ul.level0 li.level1 ul.level1 li.level2 ul.level2 li.level3 > a').slideUp(); 
     jQuery('.nav-container ul#nav li.level0 ul.level0 li.level1 ul.level1 li.'+navId+' ul.level2 li.level3 > a').slideDown(); 

     var navHeight = jQuery('div.page div.nav-container').height(); 
     var mainContainerHeight = jQuery('div.main-container').height(); 

     if (navHeight > mainContainerHeight) { 
      jQuery('div.main-container').height(navHeight); 
     }else { 
      jQuery('div.page div.nav-container').height(mainContainerHeight); 
     } 
}); 
}); 

任何幫助將不勝感激。

回答

1

您可以將回調函數添加到slideUp(duration, callback)slideDown(),並在該回調中您可以獲得容器的最終大小。

jQuery('.nav-container ul#nav li.level0 ul.level0 li.level1 ul.level1 li.level2 ul.level2 li.level3 > a').slideUp('slow', onSlideUpDownComplete); 
jQuery('.nav-container ul#nav li.level0 ul.level0 li.level1 ul.level1 li.'+navId+' ul.level2 li.level3 > a').slideDown('slow', onSlideUpDownComplete); 


function onSlideUpDownComplete() 
{ 
     var navHeight = jQuery('div.page div.nav-container').height(); 
     var mainContainerHeight = jQuery('div.main-container').height(); 

     if (navHeight > mainContainerHeight) { 
      jQuery('div.main-container').height(navHeight); 
     }else { 
      jQuery('div.page div.nav-container').height(mainContainerHeight); 
     } 
} 

這裏鏈接到Documentation

+0

嗨,感謝您的回覆,我已經改變了代碼,但問題仍然存在,任何想法爲什麼? – amir 2011-05-19 11:55:14

+0

拳頭:在你的回調中插入一個警報,並檢查它的執行時間。第二:你可以嘗試通過'jQuery('div.main-container').css('height',navHeight +「px」);'設置高度。你可以用'.outerHeight()'得到高度,這包括填充和邊框。 – DanielB 2011-05-19 11:58:58

+0

現在工作正常,感謝您的幫助。 – amir 2011-05-19 12:19:39