滚动时如何检测第一个顶级元素(在窗口视图中可见)?
喜欢这样......
我以......开头
$(window).scroll($.debounce(250,function(){
$('.box').removeClass('current').each(function() {
//if(statement) {
// $(this).addClass('current')
//}
});
}));
游乐场: http://jsfiddle.net/l2aelba/EUztW/
我不知道如何检测哪个第一个框在顶部。
答案 0 :(得分: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");
}
}));
答案 1 :(得分:-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');
}));