2013-11-28 4 views
1

jQuery를 사용하여 클릭했을 때 페이지의 다른 (동적으로로드 된) 요소로 스크롤하는 웹 페이지가 있습니다 (항목을 클릭하면 일부 Ajax가 페이지의 일부 추가 요소에서로드 됨). 그런 다음 새로 추가 된 요소의 첫 번째 항목으로 스크롤합니다.IOS Safari 상위로 스크롤 jquery 스크롤 위로 가기

IOS Safari를 제외한 모든 기능이 정상적으로 작동합니다. 상태 표시 줄을 탭하여 페이지 상단으로 스크롤하면 (일반적인 ios 동작), 링크를 클릭하면 Ajax가 새로운 요소 인 jquery scrollTop은 더 이상 작동하지 않고 페이지의 상단에 붙어 있습니다 (수동으로 스크롤하지 않는 한). 그러나 1px 스크롤 한 다음 링크 중 하나를 클릭하면 jquery scrollTop이 다시 작동합니다. 마치 IOS 기능을 사용하는 IOS 상태 표시 줄 스크롤이 사용되면 수동 스크롤 (심지어 1px 정도)까지 자바 스크립트 스크롤이 다시 작동합니다.

필자는 iPhone에서 Chrome을 테스트했으며 모든 기능이 정상적으로 작동합니다. Safari에있는 것 같습니다.

$('ul.c1 a').click(function() { 
     $('html, body').delay(250).animate({ 
      scrollTop: $('.c2').offset().top 
     }, 200); 
    }); 
+1

동일한 문제가 있습니다. 네, 사파리입니다. – Bitneko

답변

0

내가 호출하여이 문제를 해결 가지고 : 여기

내 링크 중 하나를 클릭하고있다 (그리고 새로운 요소가 아약스를 통해 페이지에로드)하면 새로 추가 된 요소로 스크롤 JQuery와의 예 window.scroll (0,1) scrollTop에서 jquery.animate를 호출하기 전에 스크롤을 '재설정'합니다. 내 탐색은 선택 드롭 다운과 항상 페이지 상단에서 트리거되기 때문에 저에게 효과적입니다.

$select.on('click', function(){ 
    window.scroll(0, 1); 
}); 

$select.on('change', function(){ 
    var $this = $(this), 
     idx  = $this.prop("selectedIndex") - 1, 
     dist = $timeline.find('.chapter').eq(idx).position().top; 

    $this.prop("selectedIndex", 0); 

    $('html, body').stop(true).animate({scrollTop: dist}, 250); 
});