2012-09-10 53 views
1

我正在使用一個腳本來使一個用戶瀏覽到我的網頁的底部點擊時。

我做的第一件事是在$(document).ready()函數內調用代碼,因此一旦DOM被加載,所有東西都會執行。後來,當我在頁面之間導航,移動網站,我發現我的腳本不工作:

$(document).ready(function(){ 
    $("#menu-button").click(function(){ 
      $(document).scrollTop($(".mainFooter").position().top); 
     }); 
    }); 

不過,我意識到這是爲什麼,在jQuery Mobile的,阿賈克斯用於每一頁的內容裝入DOM作爲您可以導航,並且DOM就緒處理程序僅對第一頁執行。要在加載並創建新頁面時執行代碼,可以綁定到本頁底部所述的pageinit事件:http://jquerymobile.com/demos/1.1.1/docs/api/events.html

我已綁定到pageinit事件,但錨仍然是如果我在不同的頁面之間導航,然後點擊相同的錨點,則不會將用戶導航到頁面的底部。我正在努力理解爲什麼綁定到pageinit尚未解決問題。

$(document).bind('pageinit', function() { 
    $("#menu-button").on('click.menu', function(){ 
     $(document).scrollTop($(".mainFooter").position().top); 
    }); 
    }); 

據我所知,AJAX在jQuery Mobile的被關閉,這將讓我的代碼與$(文件)。就緒()函數來運行。這樣做可以讓我實現所需的功能。理想情況下,雖然我想讓pageinit與啓用AJAX的工作,以便每次頁面加載AJAX時錨點將工作。

任何建議將不勝感激。

+0

你試圖表明您mobileinit函數內部警告?它是否仍然被解僱,或者是菜單按鈕事件綁定中的問題? – micadelli

回答

0

我認爲你正試圖將一個事件綁定到DOM中沒有的東西上。試試這個:爲了

$(document).bind('pageinit', function() { 
    $(document).on('click.menu', '#menu-button', function(){ 
     $(document).scrollTop($(".mainFooter").position().top); 
    }); 
}); 

$(document).bind('pagebeforeshow', function() { 
    $("#menu-button").on('click.menu', function(){ 
     $(document).scrollTop($(".mainFooter").position().top); 
    }); 
}); 
1

mobileinit工作,你應該把這些代碼以前 jQuery Mobile的實際加載。所以你需要鏈接添加到您的JS的源代碼如下:

<script src="jquery.js"></script> 
<script src="custom-scripting.js"></script> // Place mobileinit script here 
<script src="jquery-mobile.js"></script> 

更多關於可能在這裏的docs

也可發現,值得注意的是,mobileinit基本上是覆蓋全局,不是爲了使用您的網站的正常功能。

使用其他事件,如pagebeforeshowpageshowpagebeforeload等等,爲此目的

+0

你能完全解釋答案中的腳本加載順序嗎?如果我在HTML頁面末尾加載所有腳本,在''之前,是否有問題? –

相關問題