2014-10-30 2 views
0

동일한 페이지에 5 개의 div가 있습니다. 모든 div의 클래스 이름은 'post'이고 높이는 '600px'입니다. 내가 원하는 것은 5 div에서 div를 스크롤 할 때 div의 상단에 도달하면 값 0을 경고해야합니다.스크롤이 div 상단에 도달하면 scrolltop() 값 0을 인쇄하는 방법

문제가 있습니다. div2, div3, div4, div5를 맨 위로 스크롤하면 . 값 '0'이 인쇄되지 않았습니다. 하지만 div1을 맨 위로 스크롤 한 다음 다른 div를 스크롤하면 '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

답변

0

변경

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

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

로은 첫 번째 div (처음 발견 된 요소)의 값을 제공합니다. 첫 번째 div의 값이 0이면 다른 div을 스크롤하고 있더라도 $('.post').scrollTop() == 0은 항상 true이됩니다.

+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 된 div 랩, 어린이를 반복. 그런 다음 스크롤하고 사업부있는 아이 식별 할 수 this 키워드를 사용

$('#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 대신)를 구체적으로 참조합니다.

관련 문제