2013-03-19 153 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