2

我完全禁用了 jQuery Mobile ajax 导航,如下所示:

    $(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 回答