2

次のように、jQueryMobileajaxナビゲーションを完全に無効にしました。

    $(document).bind("mobileinit", function () {
        $.mobile.ajaxEnabled = false;
        $.mobile.linkBindingEnabled = false;
        $.mobile.hashListeningEnabled = false;
        $.mobile.pushStateEnabled = false;
    });

これは完全に機能していますが、アンカー/ハッシュリンクは通常JQMの外部では機能しません。

ページが読み込まれると、ページの上部に表示されます(読み込みが十分に遅い場合は、アンカーポイントに読み込みが表示されたら、上部にジャンプします)。いずれにせよ、あなたはあなたがすべきようにアンカーリンクではなくページの上部に行き着くでしょう。これに対する良い回避策はありますか?ありがとう!

4

1 に答える 1

2

この修正は、この回答( https://stackoverflow.com/a/14286613/1462775 )からわずかに変更されたコードであるため、特定のアンカーリンクだけでなく、すべてのアンカーリンクで機能するはずです。このスクリプトを<head>要素の最後に配置します。

$(document).bind('pageshow',function(e) {
    var $anchor;
    $anchor = $(location.hash);
    if ($anchor) {
        // Get y pos of anchor element.
        var pos = $anchor.offset().top;

        // Don't use silentScroll() as it interferes with the automatic 
        // silentScroll(0) call done by JQM on page load. Instead, register
        // a one-shot 'silentscroll' handler that performs a plain
        // window.scrollTo() afterward.
        $(document).bind('silentscroll',function(e,data) {
            $(this).unbind(e);
            window.scrollTo(0, pos);
        });
    }
});
于 2013-03-21T17:04:18.223 に答える