选择器仅在setTimeout内找到适当的值

时间:2017-10-15 22:15:08

标签: javascript jquery css

我有一个需要某个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 ....

EDIT2

上述afterLoad函数是 Fancybox3 js插件的一部分。 从源头阅读here

  

afterLoad:$ .noop,//完成幻灯片的内容后

由于工作限制,我不允许显示过多的代码,但是块本身位于resize()afterLoad内,afterLoad在{{1}}内被调用。 1}}阻止

1 个答案:

答案 0 :(得分:1)

根据the documentation of the plugin you're using以及您对原始问题的评论,看起来您的问题可以通过使用afterShow回调代替afterLoad来解决。一旦打开的动画完成,就会触发此回调,这时高度查询是合适的。