jQuery更改文本后的高度段落就绪事件
jQuery height paragraph ready event after altering text
我在更改包含文本后获取标记的大小时遇到问题。我目前有一个我远远不满意的解决方案。这就是我所说的(为coffeescript道歉,()=>表示函数(){})
@textField = $('<'+tag+'></'+tag+'>')
@textField.html(text).delay(120).queue(()=>
@textField.ready(@onTextReady)
)
如果我去掉延迟,就没有height(),我也不能使用window.load,而且@textfield.load似乎什么都不做。
你对解决这个问题的最佳实践有什么想法?
非常感谢
/
据我所知,元素在添加到DOM之前没有大小。除此之外,我认为尺寸和显示都没有问题。如果您只对大小感兴趣,而不想真正将元素添加到DOM中,我建议您使用可见性。
var $textField = $('<div>').text("FOO").css({
visibility: "hidden",
position: "absolute",
display: "block"
}).appendTo($("body"));
var height = $textField.height();
$textField.remove();
alert(height);
因为JavaScript的单线程特性以及浏览器如何进行HTML渲染。当您将元素添加到DOM树中时,这并不意味着渲染器已经绘制了元素或计算了元素的属性等。您应该将元素添加到DOM树中,然后从JavaScript线程中断,并将访问元素属性的代码放入队列中,以便在渲染后执行。
element.appendChild(aChild); // Adding a child to the DOM tree
setTimeout(function() {
aChild.height; // Accessing the height of the element
},0); // Setting the timeout to 0 so that the code
// is executed immediately
事实上,这就是你在你的方法中所做的。通过添加delay()并在超时后执行回调。
我希望这能让你对这个并不罕见的问题有更多的了解。
相关文章:
- electronic BrowserWindow的最小高度和宽度在hide()show()方法之后不起作用
- ExtJS——在展开/折叠时调整面板高度
- 分析高度属性时出现意外值{{specs.height}}.index.html
- 单击页面上的链接后高度发生变化
- 不加载宽度和高度的角度pintura
- 查找元素高度,包括边距
- 如何自动调整标签的高度以适应内容
- Javascript高度问题
- 使用JavaScript根据窗口/视口的高度动态调整图像大小
- 如何计算每个元素's的高度,并将这些值用作函数中的变量
- 如果宽度是百分比,如何设置以px为单位的图像高度
- 通过jquery设置最小高度
- 文档就绪提供了错误的选择器高度
- 在每个固定高度段落的最后一行添加省略号,并隐藏溢出 y
- 如何在 AngularJS 中动态增加/减少段落元素的高度
- 根据元素高度拆分段落的最有效方法
- 计算段落相对于其中内容[数据]的高度(字符数)
- 使段落自动填充父段的剩余高度
- jQuery更改文本后的高度段落就绪事件
- 如何使用jQuery获取段落高度