我对 jQuery 有一个奇怪的问题,这是我以前从未见过的。
我有一些脚本来计算position().top
始终在页面上的元素的值。这是一个li
里面一个ul
里面一个div
。
每次我发布新请求时的作品,通常都会返回300
. 但是,如果我随后点击ctrl-r
并重做请求,则同一页面的相同代码返回0
. position().top
再次刷新可以看到它的工作。
这种情况始终如一地发生,每次2nd
页面刷新。但是,每个新页面请求(更改参数或只是重新提交表单)似乎都可以正常工作。我还没有目睹这个奇怪的失败循环失序。
警告
现在需要注意的是(和一些代码):我正在使用easing和zebra_datepicker插件,并编写了我自己的垂直滑块插件,其中包含始终无法获得我的元素正确位置的代码。
所以我不认为这是一个常见的情况,我也不能发布完整的源代码,所以我发布了一个带有奇怪代码的片段,而不是其他任何东西:
// inside each loop for slider parent elements
// $(this) references the slider container, i.e <div>
var slideTo = $(this).find('.slideTo').position().top; //300 or 0
此代码在插件本身中,然后在$(window).load()
事件中调用。
这种行为方式让我认为这是某种竞争条件,但我在我的代码中找不到任何以错误顺序执行操作或多次运行的东西,相信我已经用调试将它填满了。
tl;博士
所以我的问题是:如果目标元素存在并且在调用时已加载,是否有任何情况jQuery.position().top
会返回?0
为了实现这一点,我可能会犯什么愚蠢的错误吗?可能是由于无效标记还是与元素是一个事实有关li
?