2012-02-28 5 views
2

での作業ではありません。 scrollToElementを除いてすべてがスムーズに実行されています。iScroll scrollToElementは、私はこのiScroll例に似た何かを持っているjQueryのモバイル

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); 

EDIT:

は、ここで私が現在持っているiScrollスクリプトだ私が達成しようとしているものを言及するのを忘れました。上記のiScrollの例では、特定の行にスクロールしようとしています。唯一の問題は、jQuery Mobileは何らかの理由でscrollToElementが機能しないことです。

答えて

0

私が発見した問題を回避するには、要素の位置をキャプチャしscrollToPage()を使用することです。これが機能するための当然の

var w = $("#showselectedauthors").offset().top; 
// ... 
$.storeScroller.scrollToPage(0, w); 

あなたは要素が表示されているか、オフセット時の位置をキャプチャする必要がありは無意味になります。ページが構築されているが、スクロールバーが初期化される前にこれを行うことができます。

私の場合、要素は表示され、その時点でwをキャプチャします。私はいくつかのコンテンツを更新し、スクロールをリフレッシュします。私がそれをした後、要素がまだ見えるようにしたいと思っています。

0

はまた、あなたがタイムアウトを使用している誰もがjQueryオブジェクトにスクロールする必要が

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

ケースがここに私のコードだということを確認してください。 このメソッドを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); 
} 
関連する問題