2

この iScroll の例に似たものがあります: http://cubiq.org/dropbox/iscroll4/examples/simple/

ただし、jQuery モバイルを使用しています (つまり、ヘッダー、フッター、およびコンテンツは jQuery Mobile を使用して設定されています)。scrollToElement を除いて、すべてがスムーズに実行されています。

jQuery Mobile と iScroll を使用しているときに scrollToElement を動作させる方法はありますか?

私が現在持っているiScrollスクリプトは次のとおりです。

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 の例では、特定の行にスクロールしようとしています。唯一の問題は、何らかの理由で jQuery Mobile が scrollToElement の動作を妨げていることです。

4

3 に答える 3

0

私が見つけた回避策は、要素の位置をキャプチャしてから使用することscrollToPage()です:

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

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

私の場合、要素は表示wされており、その時点でキャプチャします。次に、いくつかのコンテンツを更新し、スクローラーを更新します。それを行った後、要素がまだ表示されていることを確認したいと思います。

于 2012-08-09T15:40:12.623 に答える
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);
}
于 2012-12-20T18:07:57.397 に答える
0

また、タイムアウトを使用していることを確認してください

         setTimeout(function () {
            myScroll.scrollToElement(".elementClass", "0s");
            myScroll.refresh();
        }, 0);
于 2012-09-05T17:20:56.367 に答える