没有ajax的jQuery Mobile锚链接没有加载

时间:2013-03-19 23:22:42

标签: jquery-mobile hyperlink anchor

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

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

这完全有效,除了锚点/哈希链接不像JQM之外通常那样工作。

当页面加载时,您位于页面顶部(如果加载速度足够慢,您将看到锚点处的负载,然后跳到顶部)。无论哪种方式,你最终都在页面的顶部,而不是你应该在锚点链接。这有什么好的解决方法吗?谢谢!

1 个答案:

答案 0 :(得分:1)

这个修补程序只是稍微修改了这个答案(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);
        });
    }
});