2012-06-22 89 views
0

我花了幾天敲我的頭,谷歌搜索,並沒有發現這個可接受的解決辦法。 我正在使用Twitter Bootstrap來編寫一個新網站。我們使用的是導航類和內置下拉功能,但不是標準的單柱下拉菜單中,我們願以mulitcolumn下拉(我們有很多類別和子類別,我們想在下拉列表中顯示,並希望保持這一切都在屏幕上,沒有下拉變得超長,不得不滾動)。
爲了動態columnize的數據(這是在a)中,我使用jquery.columnizer.js這是巨大的。jQuery的行爲上顯示HTML元素:無在Twitter的引導導航下拉

問題是這樣的: 由於隱藏下拉列表(通過display:none)jquery無法獲取下拉容器的尺寸。由於無法獲取尺寸,因此柱狀圖不能進行分欄。

我已經試過columnize功能連接到在導航項目,它不會在第一次點擊的工作click事件(如果你打開和關閉它適用於後續的切換菜單)。

我不想修改引導javascript和似乎沒有要在columnizer什麼我可以做的工作。 那麼,怎樣才能讓我們的columnize功能(即$()columnize()。」 myNavElements。;)作爲被顯示的引導下拉後觸發?

編輯
基於公認的答案,對於工作的解決辦法是這樣的:

$(".dropdown").addClass("open"); 
$('.dropdown-menu').columnize(); 
$('.dropdown').removeClass("open"); 

回答

2

將顯示器設置爲block,做的東西與它,然後將其設置回none。由於JavaScript是單線程的,瀏覽器將不會重繪,直到腳本完成。因此,在將其重新設置爲none之前,它將沒有機會將該元素繪製爲block

+0

工作正常! Bootstrap將「打開」類應用於下拉父項以顯示和隱藏菜單。爲了讓這個工作,我必須申請,然後刪除類。請參閱編輯後的簡單3線解決方案。 –