我在同一页面上有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');
}
});
答案 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)。