2013-03-19 188 views
2

jQuery Mobile的锚链接我有jQuery Mobile的AJAX导航完全禁止,就像这样:没有Ajax没有加载

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

这是可以正常使用EXCEPT,锚/散列链接不会,因为他们通常做JQM在外面工作。例如,这链接到我的测试地点:

http://test.creativelogic.biz/operators#alert-kayak

应该向右走的<h6>以“#警报的皮艇”的ID。但是,当页面加载时,您位于页面的顶部(如果加载速度足够慢,您会看到加载点位于锚点处,然后跳转到顶部)。无论哪种方式,你最终在页面的顶部,而不是在你的锚链接。有没有什么好的解决方法?谢谢!

+1

看起来你正在运行一些jQuery插件,包括一些名为“scrollTo”的东西。您是否通过删除其他脚本来确保问题是jQuery Mobile的问题? – Jasper 2013-03-19 23:56:49

+0

你有“东西”,迫使页面在完全加载后进入顶端。 – Omar 2013-03-20 11:38:42

+0

@Jasper - 是的,绝对尝试删除所有其他脚本,结果相同。网络充满了各种同样的问题,包括 - > http://stackoverflow.com/questions/14863114/jquery-mobile-page-wont-load-to-anchor-tag-on-link-from-separate – Trevor 2013-03-20 14:07:45

回答

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); 
     }); 
    } 
}); 
+0

我希望这可以为你工作:) – Omar 2013-03-21 17:45:29