我有一个需要某个div高度的脚本。
问题是jQuery中的.height()
方法没有返回正确的值,除非它位于setTimeout
函数内,即使值为0
。
所以这个:
console.log("1:" + $(slides[0]).find('.slide__inner').height());
setTimeout(function(){console.log(
"2:" + $(slides[0]).find('.slide__inner').height());}
, 0);
结果
1:0
2:399 //期望值
现在我知道浏览器多线程的东西,并且计时器元素中的元素在它们自己的....维度中运行,但是我需要使这个选择器打印正确的值而不使用setTimeout或任何计时器函数。
其他信息:
目标div是绝对位置,函数本身是在内部内容(和高度)全部设置后专门启动的。
不是When should I use jQuery's document.ready function? 的副本。我特意说我不想使用setTimeout ....
上述afterLoad
函数是 Fancybox3 js插件的一部分。
从源头阅读here:
afterLoad:$ .noop,//完成幻灯片的内容后
由于工作限制,我不允许显示过多的代码,但是块本身位于resize()
内afterLoad
内,afterLoad
在{{1}}内被调用。 1}}阻止
答案 0 :(得分:1)
根据the documentation of the plugin you're using以及您对原始问题的评论,看起来您的问题可以通过使用afterShow
回调代替afterLoad
来解决。一旦打开的动画完成,就会触发此回调,这时高度查询是合适的。