1

我正在开发我的网站,我有一个按钮(位置:固定),每次单击它时,我都需要将页面滚动到下一个具有 class="picture" 的 div 并且首先位于 scrollTop().top 下方价值。我将带有 class="picture" 的 div 存储在 $pictures 数组中,但我不确定是否需要它......

$(document).ready(function()
{

  var $pictures = $('.picture');

  var i;

  $(window).scroll(function()
  {
    for(i in $pictures)
    {
      if($("html").scrollTop() > $pictures[i].offset().top)
      {
        alert(i);
      }
    }
  });
});

不幸的是,它不起作用。也许有人有更好的方法?

谢谢!

4

1 回答 1

1

试试这个。除了被误导的for-in循环之外,您还需要计算$(window).scrollTop()而不是$('html').scrollTop(),它总是等于零。

$(document).ready(function() {
    var $pictures = $('.picture');

    $(window).scroll(function() {
        $pictures.each(function(i, el) {
            if ($(window).scrollTop() > $(this).offset().top) {
                console.log(i);
            };
        });
    });
});​

http://jsfiddle.net/mblase75/Uysmz/

这将记录从屏幕上向上滚动的每张图片的索引号。或者,如果您只想要滚动到屏幕外的最后一张图片,您可以使用以下.filter函数:

$(document).ready(function() {
    var $pictures = $('.picture');

    $(window).scroll(function() {
        $justpast = $pictures.filter(function(i, el) {
            return ($(window).scrollTop() > $(this).offset().top);
        }).last();
        console.log($justpast.index());
    });
});​

http://jsfiddle.net/mblase75/RuR6R/

于 2012-09-13T17:35:47.407 回答