繁体   English   中英

元素渲染完成后如何立即运行函数?

[英]How can I run a function as soon as an element has finished rendering?

我需要根据另一个元素的高度设置一个元素的高度。 假设该元素完成渲染后,高度为490px。

如果我在$(document).ready()函数开头查询其他元素的高度,则它将返回432px。

如果我在setTimeout(function, 100)内查询其他元素的高度,则返回约475px。

如果将setTimeout到150左右,则元素已完成渲染,得到190。但是显然我不能指望这一点。

如果可能,我不想等待整个页面完成加载; 我只想等待这个元素。

看来load事件应该在任意元素上起作用,但是据我所知,它在浏览器或Chrome中没有实现。

编辑 :元素不是图像,并且(几乎可以肯定)没有图像将在元素内部。 它只是一个<div> ,其中包含其他<div><p>以及其他内容。 高度显然是在要应用的CSS中间查询的。 代码样本即将推出。

编辑2这是从我的网站被黑客入侵的小提琴 (请原谅可怕的标记;不过我还没有清理Drupal的输出。)小提琴并没有表现出我要纠正的不良行为,因为整个代码段在Javascript的相关部分被渲染之前就已经呈现出来了。跑。

有没有办法做到这一点,还是我被window.onload困住了?

您可以执行以下操作:

<img src="myImage.gif" onload="loadImage()">

您将至少要使用$(window).load()因为您需要等待其他可能影响页面元素尺寸的资源,例如图像和CSS表单。

load()也可以在图像上使用。 您应该能够正确使用它,而无需setTimeout

http://api.jquery.com/load-event/包含一个通知,指出它不适用于图像。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM