2013-08-06 2 views
0

윈도우의 현재 스크롤 위치를 기반으로 가장 가까운 HTML 조각 식별자 (hashtag href)를 찾으려면 어떻게해야합니까?jQuery로 위치를 스크롤 할 가장 가까운 HTML 조각 식별자 찾기

책갈피 버튼을 누를 때 사용자가 가장 가까운 섹션을 캡처하는 JS/jQuery를 통해 북마크 기능을 만들고 싶습니다. 백엔드에 대한 액세스 권한이 없기 때문에 후크/숨겨진 필드를 추가 할 수는 없지만 조각 번호 은 내 후크 인입니다.

jQuery의 .scroll() 처리기를 사용할 수 있다고 생각하지만 새 식별자가 있는지 알려면 "주어진 스크롤 위치의 DOM 콘텐츠"를 찾는 방법을 모르겠습니다. 아니면 그게 최선의 접근이라면 ...

생각들?

+0

Downvote 설명 부탁드립니다. – dooleyo

답변

2

뭔가 :

$('a [href]').filter(function() { 
    var docViewTop = $(window).scrollTop(); 
    var docViewBottom = docViewTop + $(window).height(); 

    var elemTop = $(this).offset().top; 
    var elemBottom = elemTop + $(this).height(); 

    return ((elemBottom <= docViewBottom) && (elemTop >= docViewTop)); 
}) 
.first(); 
+0

기준 : http://stackoverflow.com/questions/487073/check-if-element-is-visible-after-scrolling –

+0

감사합니다. Artur. 내 상황에 대한 더 나은 접근 방법을 찾았는데 (다른 답변으로 추가 했음), 이것은 기술적으로 내 원래 질문에 대한 정답입니다. – dooleyo

0

나는 꽤 당신의 질문을 이해하지 못한다. 그러나 jquery를 사용하여 스크롤 할 때 뭔가 할 수있다. 그런

$(document).ready(function(){ 
    $(window).scroll(function(){ 
     if ($(window).scrollTop() > 100){ 
      /*you check if identifier has appeared here*/ 
     } 
    }); 
}); 
1

내 원래의 질문에 대한 답변 기술적으로, 이것은 내가 사용하기로 결정 더 유연한 솔루션이지만 : 사용자가 "즐겨 찾기"를 명중

jQuery는 팬텀 쿼리 문자열이 붙은 페이지 URL을 pos=X에 저장합니다. 여기서 X는 현재 값 $('body').scrollTop()입니다.

사용자가 자신의 북마크를 다시 방문하려면 저장된 URL이로드되고 삽입 된 jQuery가 pos 값을 검색하고 페이지를 북마크 된 위치로 스크롤합니다.

이것은 문자 그대로 사용자가 그만 두었던 부분을 다시 픽셀로 가져 가기 때문에 이상적입니다.