当滚动到达div的顶部时,如何打印scrolltop()值0

时间:2014-10-30 20:50:07

标签: javascript html

我在同一页面上有5个div。所有div都有相同的班级名称' post'和相同的高度' 600px' 所以我想要的是当我在5 div中滚动任何div时,当它到达div的顶部时,它应该警告值0。

麻烦是当我将div2,div3,div4,div5滚动到顶部时。它没有打印价值' 0'。 但是当我将div1滚动到顶部然后如果我滚动任何其他div它显示' 0'。我需要打印 ' 0'无论我先滚动哪个div。 为什么会这样。有关jsfiddle代码,请参阅注释部分。提前谢谢。

演示

$("window").load()
{
    $('.post').scrollTop($('.post').height())  
} 

$('.post').scroll(function() {
    if($('.post').scrollTop()==0)
    {
        alert('0');
    }
});

jsfiddle

4 个答案:

答案 0 :(得分:0)

更改

if($('.post').scrollTop()==0)
{
    alert('0');
}

if($(this).scrollTop()==0)
{
    alert('0');
}

$('.post').scrollTop()将给出第一个div(首先找到的元素)的值。如果第一个div的值为0,$('.post').scrollTop() == 0将始终为true,即使您正在滚动其他div

答案 1 :(得分:0)

你总是选择第一个div。这就是你得到这个结果的原因。

在此代码中:

if($('.post').scrollTop()==0)
{
    alert('0');
}

$('。post')。scrollTop()将返回第一个找到的元素。

试试这个:

$('.post').scroll(function() {

    $('.post').each(function() {
        if($(this).scrollTop()==0)
        {
            alert('0');
        }
    });
});

答案 2 :(得分:0)

将您的post div包裹在父级中,并遍历子级。然后使用this关键字来标识您正在滚动的子div:

$('#allPosts').children().scroll(function () {
    if ($(this).scrollTop() === 0) {
        alert('0');
    }
});

答案 3 :(得分:0)

您只需要:

$(".post").scroll(function () {
    if ($(this).scrollTop() == 0) {
        alert('0');
    }
});

小提琴:http://jsfiddle.net/052xntw9/19/

这将为每个div附加一个事件监听器,而$(this)特指那个div(而不是第一个div)。