JQuery:预先计算插入项目的高度
JQuery: Pre-Calculate Height of Inserted Item
一些文本已通过AJAX调用检索,需要插入到DOM:中
$("#someInsertionPoint").append(someHtml);
someHtml可能很小,以便为#someInsertionPoint创建50px的结果高度。再说一遍,可能有太多的文本,以至于#someInsertionPoint最终的高度为300px或更高,以便包含所有文本。
在someHtml很长的情况下,规范要求显示文本的截断版本(带尾部省略号),然后是"更多…"链接,单击该链接时,会以动画方式增加#someInsertionPoint的高度,以便容纳全文。
除了一个例外,一切似乎都很简单:当插入全文时,我如何确定#someInsertionPoint的高度?回想一下,当用户单击"更多…"链接时,该值将用作动画高度更改的终点。StackOverflow.com上的一些帖子表明,高度无法预先计算;只有在文本插入完成后,才能检索。这让我相信我的方法应该如下:
(1) 将someInsertionPoint的可见性设置为"隐藏"。
(2) 在变量中插入全文并缓存someInsertionPoint的高度。
(3) 截断插入的文本并添加省略号。将#someInsertionPoint的高度设置为50px。
(4) 使someInsertionPoint可见,以显示高度为50px的截断文本。
(5) 当点击"更多…"链接时,截断的文本可以替换为全文,我可以使用我在#2中缓存的高度将高度设置为理想大小。
有更好的方法吗?
谢谢。
我认为你会制造一个问题,因为它通常没有问题。这是一个设计缺陷。只是不要使用固定的高度。如果你想自动调整某个东西的大小,请使用最小高度,让内容来调整大小。这是简单的方法。否则,当您想要使用固定高度时,可以使用两个div(一个具有固定高度),并在插入后测量"ajax"高度(它必须可见以计算高度)。
例如:
<div id="fixed" style="height:200px;overflow:hidden">
<div id="loader">
</div>
$('#loader').html('your content');
alert($('#loader').outerHeight());
当您尝试这个例子时,#fixeddiv在加载网络内容时不会调整大小。插入后,您可以测量高度,并根据需要调整父div#fixed。
希望它能帮助
- 使用jQuery插入HTML页面的第一个项目缺少结束标记
- 是否可以设置柔盒插入、移除和项目位置的动画
- 如何使用[Package CollectionFS]在插入图像之前检查宽度和高度
- 手风琴中重置项目高度是't正确复位
- 具有100%高度项目的重叠砌体
- 我想将插入的日期与laravel 5项目中的当前时间进行比较
- 创建新的同位素项目并插入外来内容
- 如何在通过 AJAX 插入内容后获取元素的高度
- 如何使用 DOMNodeInsert 将项目插入到 DOM 中
- 如何在项目符号列表中插入背景(图片)元素,其 URL 写入相邻的项目符号列表中
- AngularJS:插入新项目后对列表重新排序
- 扩展菜单插入带有覆盖的新项目
- 将项目插入活动选项卡窗格
- 确定图像未插入 DOM 时的宽度和高度
- 在MongoDB中更新后,插入项目的顺序搞砸了
- Java,JavaFx:在JavaFX容器中插入一个HTML&JS(静态,无互联网)项目
- JQuery:预先计算插入项目的高度
- javascript模板是否仅适用于将小项目插入DOM
- 我可以/应该根据下拉菜单栏的项目数量为其设置动态高度
- 在SVG元素中动态插入项目