我有一个脚本,它要求某个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...。
编辑2
提到的
afterLoad
函数是Fancybox3 js插件的一部分。从源中读取发现here:
afterLoad:$ .noop,//幻灯片内容加载完成后
由于工作限制,我不允许显示太多代码,但该块本身位于
resize()
内声明的afterLoad
内,该元素在afterLoad
块的末尾被调用 最佳答案
根据the documentation of the plugin you're using和您对原始问题的评论,看来可以通过使用afterShow
回调而不是afterLoad
来解决您的问题。打开的动画完成后,即高度查询合适时,将触发此回调。
关于javascript - 选择器仅在setTimeout内部找到合适的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46760571/