0

在过去的几天里,我一直在敲我的头并搜索谷歌,但还没有找到一个可以接受的解决方案。我正在使用Twitter Bootstrap编写一个新网站。我们正在使用 Nav 类和内置的下拉功能,但是我们想要一个多列下拉列表而不是标准的单列下拉列表(我们有很多类别和子类别,我们想在下拉列表中显示并想要将其全部保留在屏幕上,而不会使下拉菜单变得超长并且必须滚动)。
要动态列化数据(在 a 中<ul>),我正在使用 jquery.columnizer.js,这很棒。

问题是这样的:由于下拉菜单是隐藏的(通过display:none)jQuery 无法获得下拉容器的尺寸。由于无法获取维度,因此分列器无法分列。

我尝试将 columnize 函数附加到导航项上的单击事件,这在第一次单击时不起作用(如果您打开和关闭菜单,它在随后的切换中起作用)。

我不想修改 Bootstrap Javascript,并且 columnizer 中似乎没有任何东西可以让我工作。那么,我们如何才能$('.myNavElements').columnize();在 Bootstrap 下拉菜单显示后触发 columnize 函数(即)?

编辑
根据接受的答案,适用的解决方案是:

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

1 回答 1

2

将显示设置为block,对其进行处理,然后将其设置回none。因为 JavaScript 是单线程的,所以浏览器在脚本完成之前不会重绘。因此,它不会像block您将元素设置回none.

于 2012-06-22T15:00:12.623 回答