0

我想要的是

根据 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()。

更新

我没有找到任何似乎会影响高度的 return false 。但是,我确实发现直接在 html 中使用 style="height:0px;" 设置高度 正确更新高度。我不知道还能尝试什么,所以我现在很难过......

4

2 回答 2

1

查看.height()jquery的功能。

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

更新

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

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

于 2012-08-24T16:35:14.783 回答
0

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

.height(currentElement.height).height() 

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

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

于 2012-08-24T16:49:30.943 回答