Javascript jQuery.height()可见时返回0,隐藏时返回非0

Javascript jQuery.height()可见时返回0,隐藏时返回非0,javascript,jquery,Javascript,Jquery,这里的问题和其他问题正好相反:在jQuery中,当元素可见时,我无法获取元素的高度,但当元素隐藏时。我有以下HTML代码: <div id="filtering-filter-holder"> <div id="filtering-filter-holder-inner"></div> </div> 最后是document.ready()中的JS: 如果过滤过滤器支架可见,则会添加一些动画。若并没有,那个么初始设置是必需的——然而,若元素

这里的问题和其他问题正好相反:在jQuery中,当元素可见时,我无法获取元素的高度,但当元素隐藏时。我有以下HTML代码:

<div id="filtering-filter-holder">
    <div id="filtering-filter-holder-inner"></div>
</div>
最后是document.ready()中的JS:

如果
过滤过滤器支架
可见,则会添加一些动画。若并没有,那个么初始设置是必需的——然而,若元素是display:block,那个么我无法获得过滤器支架内部的高度,我必须在之前隐藏它。我想知道,我做了什么坏事——正如谷歌所说,开发人员遇到了相反的问题

我想知道为什么我必须先隐藏元素

我可以同时使用jQuery和jQueryUI,因为它们都加载在页面上:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script type="text/javascript" src="http://code.jquery.com/ui/1.10.2/jquery-ui.js"></script>


示例如下:

上的演示将非常有用。这是一个问题,它在那里工作。我加入了live页面。抱歉,我尝试了在fiddle上使用示例。这里是:@tomis,我的2美分,你在浪费时间重新发明轮子状的下拉列表和其他web组件,尝试使用jQueryUI或twitter bootstrap之类的框架。@DhruvPathak这不是完整的代码,它会复杂得多。但我需要先解决这个问题。我有真正的理由。。。
$('div.filtering-filter-headline').mouseenter(function() {
    var el = $(this).parent().find('div.filtering-filter-content');

    if ($('div#filtering-filter-holder').is(':visible')) {
        $('div#filtering-filter-holder-inner').stop(true, true).fadeOut(300, function() {
            $('div#filtering-filter-holder-inner').html($(el).html());
            var height = $('div#filtering-filter-holder-inner').height();
            $('div#filtering-filter-holder').stop(true, true).animate({ height:height }, 300);
        }).fadeIn(300);
        $('div#filtering-filter-holder').stop(true, true).animate({ left: $(this).offset().left }, 300);
    }
    else {
        $('div#filtering-filter-holder-inner').html($(el).html());
        $('div#filtering-filter-holder').css({ top: ($(this).offset().top + 22), left: $(this).offset().left });
        $('div#filtering-filter-holder').fadeIn(300);
        $('div#filtering-filter-holder-inner').fadeOut(1, function() {
            var height = $('div#filtering-filter-holder-inner').height(); // not working without hidding this element
            $('div#filtering-filter-holder').height(height);
        }).fadeIn(1);
    }
});
<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script type="text/javascript" src="http://code.jquery.com/ui/1.10.2/jquery-ui.js"></script>