我正在编写一个函数,以针对我存储在数组中的预定义元素位置来测试滚动条位置。页面上可以有任意数量的此元素类型,这就是为什么我使用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之后设置高度和宽度
如果您有任何图像,则在此特定时刻页面尺寸将不合适。尝试先预加载图像,并在完成后预加载图像,而不要调用函数。
希望这个帮助:)

09-17 07:38