如何跟踪滚动到哪个div位置?

时间:2014-03-18 22:55:46

标签: javascript jquery

如何跟踪滚动到哪个div位置?当div高度不固定而且不确定时(从db select),如果滚动到每个div然后做某事怎么做...

我应该将每个div位置push存入数组然后如果在数组中滚动位置然后滚动到键div?但这似乎会崩溃...... ..

<div class="1">1</div> // 10px height
<div class="2">2</div> // 13px height
<div class="3">3</div> // 11px height
… // … height 

1 个答案:

答案 0 :(得分:2)

DOM加载时,所有元素都有一个偏移量。

如果您想将所有顶部推入阵列,请执行以下操作。然后在滚动时,将窗口滚动位置与数组进行比较。如果它与数组编号匹配,请使用该数组编号执行所需操作。 这是未经测试的代码,但理论是

var divTops = [];  //Start an empty array
$(document).ready(function(){  //When the DOM loads
    $('div').each(function(e){ //For each div
        var top = $(this).offset().top; //Get its top
        divTops.push(top);  //and push that top into the array
    });
});

$(window).scroll(function(){  //When the user scrolls
    var scrolled = divTops.indexOf($(window).scrollTop());  //get the index number 
    if(scrolled === 0){  // Use the index number to control whatever is there.
        //Do something with the first div
    } else if(scrolled === 1){
        //Do something with the second div
    } else if(scrolled === 2){
        //Do something with the third div
    } else {

    }
});