2012-02-28 5 views
2

작동하지 : 제외 http://cubiq.org/dropbox/iscroll4/examples/simple/iScroll scrollToElement 내가이 iScroll 예와 비슷한 뭔가가 jQuery를 모바일

을하는 내가 (즉, 머리글, 바닥 글 및 내용은 jQuery를 모바일을 사용하여 설정)의 jQuery 모바일을 사용하고 있습니다. scrollToElement를 제외하고는 모든 것이 원활하게 실행됩니다.

jQuery Mobile 및 iScroll을 사용할 때 scrollToElement를 작동시키는 방법이 있습니까?

var myScroll; 
function loaded() { 
    myScroll = new iScroll('wrapper'); 
} 
document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false); 
document.addEventListener('DOMContentLoaded', function() { setTimeout(loaded, 200);}, false); 

편집 :

가 여기에 내가 현재 가지고있는 iScroll 스크립트의 내가 달성하기 위해 노력하고있어 언급하는 것을 잊었다. 위에서 언급 한 iScroll 예제에서 특정 행으로 스크롤하려고합니다. 유일한 문제는 jQuery Mobile이 scrollToElement가 어떤 이유로 작동하지 못하게한다는 것입니다.

이에 대한 물론
var w = $("#showselectedauthors").offset().top; 
// ... 
$.storeScroller.scrollToPage(0, w); 

이 요소가 표시 또는 오프셋이 의미가있을 것입니다 때 위치를 포착해야 할 일 :

답변

0

내가 찾은 해결 방법은 요소의 위치를 ​​포착하고 scrollToPage() 사용하는 것입니다 . 페이지가 빌드 될 때 스크롤러가 초기화되기 전에이 작업을 수행 할 수 있습니다.

내 경우 요소가 표시되며 그 당시 w을 캡처합니다. 그런 다음 일부 콘텐츠를 새로 고치고 스크롤러를 새로 고칩니다. 그 후에 요소가 계속 표시되는지 확인하려고합니다.

0

또한 당신이 여기 객체 내 코드의

  setTimeout(function() { 
      myScroll.scrollToElement(".elementClass", "0s"); 
      myScroll.refresh(); 
     }, 0); 
0

케이스 사람이 jQuery를로 스크롤 할 필요가있는 타임 아웃을 사용하고 있는지 확인하십시오. setTimeout 내부에서이 메서드를 호출하고 "iscroll"개체가 정의되어 있는지 확인하십시오.

function scrollToElement($element) { 
    if ($element.size() > 1) { 
     throw new Error("Cannot be a node!"); 
    }; 
    var offset = $element.offset().top; 
    var to = -(offset - iscroll.y); 
    to = (iscroll.maxScrollY > to) ? iscroll.maxScrollY : to; 
    iscroll.scrollTo(0, to); 
}