2014-11-05 5 views
1

해당 요소가 div()에 표시되는지 확인하려고합니다.해당 요소가 div에 표시됩니다.

출발점은 요소 : 1,2,3,4가 표시됩니다.

왜 함수 : checkIfInView가 요소 번호 6에 대해 true를 반환합니까?

http://jsfiddle.net/Ht6Ym/2971/

function checkIfInView(element){ 
    var offset = element.offset().top - $('#divContent').scrollTop(); 

    if(offset > $('#divContent').innerHeight){ 
     // Not in view 
     return false; 
    } 
    return true; 
} 

감사 :

이 내 jsfiddle입니다!

답변

4

innerHeight으로 전화하지 않으셔도됩니다. 함수를 실행하려면 괄호가 필요합니다. 그렇지 않으면 함수 선언에 대해 평가하고있는 것입니다 (올바른 용어인지 확실하지 않습니다. 잘못하면 수정하십시오).

if(offset > $('#divContent').innerHeight()){ 
+0

당신이 맞아요로 변경

if(offset > $('#divContent').innerHeight){ 

체크! http://jsfiddle.net/Ht6Ym/2972/ – Hoijof

+0

아쉽게도 작동하지 않습니다. $ ('# divContent'). scrollTop (100); var el = $ ('# divContent'). children(). eq (0); 알림 (checkIfInView (el)); var el = $ ('# divContent'). children(). eq (6); 알림 (checkIfInView (el)); 두 경우 모두 false 여야합니다. –

+1

@ AlonShmiel 이는 논리가 나쁘다는 것입니다. 새로운 스크립트를 만들었습니다 : http://jsfiddle.net/sj0aeavw/1. 처음에는 상대적으로 위치하는 부모를 사용해야하고, 'offset'대신에'position'을 사용해야합니다 (하나는 부모 요소에 속하며 다른 하나는 전체 문서와 관련됩니다). 그리고 두 위치 모두에 대해 위치를 확인해야합니다 컨테이너의 상단과 하단. –

관련 문제