2014-10-30 1 views
0

У меня есть 5 div на той же странице. Все div имеют одинаковое имя класса 'post' и ту же высоту '600px'. Так что я хочу, когда я прокручиваю любой div из 5 div и когда он достигает вершины div, он должен предупредить значение 0.Как напечатать значение scrolltop() 0, когда прокрутка достигает вершины div

Проблема: когда я прокручиваю div2, div3, div4, div5 вверху , Он не печатал значение «0». Но когда я прокручиваю div1 вверху, а затем, если я прокручиваю любой другой div, он показывает «0». Мне нужно напечатать '0' независимо от того, какой div я прокручиваю первым. Почему это происходит. См. Раздел комментария для кода jsfiddle. заранее спасибо.

Demo

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

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

jsfiddle

+0

http://jsfiddle.net/052xntw9/11/ – user2668276

ответ

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

+0

добро пожаловать! –

0

Вы всегда выбираете первый div. Вот почему вы получаете этот результат.

В этом коде:

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

$ ('пост') scrollTop() будет возвращать первый найденный элемент..

Попробуйте это:

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

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

О, теперь я понимаю. Это действительно помогает мне понять проблему очень хорошо. Спасибо, сэр – user2668276

0

Оберните post дивы в родительском, и перебирать детей. Затем используйте this ключевое слово, чтобы определить, какой ребенок ДИВ вы прокрутки:

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

Все, что вам нужно:

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

Fiddle: http://jsfiddle.net/052xntw9/19/

Это будет приложить слушателя событий для каждого DIV, и $ (это) относится конкретно к этому div (вместо первого div).

Смежные вопросы