2014-10-30 62 views
0

我在同一页面上有5个格子。所有的div都有相同的类名'post'和相同的高度'600px'。 所以我想要的是,当我滚动5 div之间的任何股利,当它达到了股利的顶部它应该警报值0.如何在滚动达到格子顶部时打印滚动()值为0

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

演示

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

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

jsfiddle

+0

http://jsfiddle.net/052xntw9/11/ – user2668276 2014-10-30 20:50:35

回答

0

变化

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

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

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

+0

这是完美的作品。谢谢先生。 – user2668276 2014-10-30 20:58:58

+0

不客气! – 2014-10-30 20:59:56

0

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

在此代码:

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

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

试试这个:

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

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

哦,现在我明白了。这非常有助于我理解这个问题。谢谢你,先生 – user2668276 2014-10-30 21:00:55

0

裹在父母的post的div,并通过孩子迭代。然后使用this关键字,以确定您滚动哪个孩子的div:

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

所有你需要的是:

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

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

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