1

私は自分のウェブサイトを開発しており、ボタン(位置:固定)があり、クリックするたびに、class="picture" を持ち、最初に scrollTop().top の下にある次の div にページをスクロールする必要があります。価値。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 に答える