如何获取自页面加载后更改的div的CURRENT高度?

时间:2012-08-24 16:32:10

标签: javascript jquery height

我想要什么

根据CURRENT内容确定.results div的高度。

背景

当我浏览我的网站时,结果div会根据搜索等更新动态内容。我可以获得结果div的高度,但它只是我可以得到的初始值。

更新div的代码

$results.unbind();
$results.empty();
$results.html(newContents);

我尝试过什么

请注意,我打印出值,以便我可以在firebug中查看。

var $results = $('.results');          /* Prints out: */
console.log($results.height());        /* 18          */
console.log($results[0].scrollHeight); /* 18          */
console.log($results[0].clientHeight); /* 18          */
console.log($results.css('height');    /* 18px        */
console.log($results.attr('height');   /* undefined   */

高度延伸到页面底部,因此18px绝对不准确。我如何获得真正的价值?

可能的解决方案?

ryanulit帮助我弄清楚.height()应该正常运作我正在做的事情。因此,我认为正确处理事件存在一些问题。应用程序中有许多地方返回false而不是调用event.preventDefault()。问题是,当你返回false时,除了event.preventDefault()之外,它还会调用event.stopPropagation()。

更新

我没有找到任何可能影响身高的返回假。但是,我确实发现在html中直接设置高度为style =“height:0px;”正确更新高度。我不知道还有什么可以尝试的,所以我现在很难过......

2 个答案:

答案 0 :(得分:1)

查看jquery的.height()函数。

这是一个jsfiddle,表明它实际上正在改变:http://jsfiddle.net/EvybH/2

<强>更新

height: 0px;让我思考,所以我在小提琴中测试并更新:http://jsfiddle.net/EvybH/3/

如果在css中设置特定高度,则看起来.height()属性将始终返回该值。检查小提琴。如果要将div设为默认高度,然后允许其展开,则可以设置min-height: 18px

答案 1 :(得分:0)

正如之前的海报所说,.height()应该正常工作,但是如果它不起作用,我相信打电话

.height(currentElement.height).height() 

将返回一个刷新的高度(虽然非常hacky,可能不鼓励)。

编辑:currentElement是具有动态高度的元素