我正在编写一个函数,以针对我存储在数组中的预定义元素位置来测试滚动条位置。页面上可以有任意数量的此元素类型,这就是为什么我使用for循环来测试滚动条位置的原因。
这段代码在Firefox中可以正常工作,但是由于某些原因,jQuery在Chrome中为我的每个.post-info($ pi)项目返回完全不同的位置,甚至导致$(document).height错误。这是我的JavaScript还是CSS的问题?在测试位置后,我将假设我的JS:相对于CSS中的大多数元素。
这是我正在运行的jQuery:
(function(){
var i,
st,
length,
arrPos = []
$wn = $(window);
$pi = $('.post-info');
$pi.each(function(){
arrPos.push($(this).offset().top - 80); // offset -80 so new item sticks quicker.
});
height = $(document).height();
arrPos.push(height); // add bottom position of document to array for last item.
length = arrPos.length;
$wn.scroll(function(){ //Scroll Event Listener
st = $wn.scrollTop();
for(i=0; i<=length; i++){
// i = index, n = next
n = i+1;
if(st > arrPos[i] && st < arrPos[n]) _stick(i);
}
});
非常感谢。
最佳答案
Google Chrome在$(document).ready之后设置高度和宽度
如果您有任何图像,则在此特定时刻页面尺寸将不合适。尝试先预加载图像,并在完成后预加载图像,而不要调用函数。
希望这个帮助:)