2

スクロール時に最初のトップ要素(ウィンドウビューに表示されている人)を検出する方法は?

このような...

最初のトップ要素を検出

私はから始めます..

$(window).scroll($.debounce(250,function(){
    $('.box').removeClass('current').each(function() {
       //if(statement) {
       //  $(this).addClass('current')
       //}
    });
}));

プレイグラウンド: http://jsfiddle.net/l2aelba/EUztW/

どの最初のボックスが一番上にあるかを検出する方法がわかりません。

4

2 に答える 2

5
$(window).scroll($.debounce(250, function(){
    var scrollTop = $(window).scrollTop();
    var $first;
    var firstPos;

    $('.box').each(function() {
            var $box = $(this).removeClass('current');
            var pos = $box.offset();

            if(pos.top > scrollTop && (!firstPos || pos.top < firstPos.top)){
                $first = $box;
                firstPos = pos;
            }
    });

     if($first){
        $first.addClass("current");   
     }
}));

http://jsfiddle.net/EUztW/10/

于 2013-05-30T13:34:01.457 に答える
-1

.offset() を使用して、トップ div を見つけることができます。

$(window).scroll($.debounce(250,function(){
    var top_one;
    var offset_top = 10000;
    $('.box').removeClass('current').each(function() {
        offset = $(this).offset();
        if(offset.top < offset_top){
            offset_top = offset.top;
            top_one = $(this);
        }
    });
    top_one.addClass('current');
}));

jsフィドル

于 2013-05-30T13:42:42.820 に答える