2012-05-19 39 views
3

我需要獲取由加載的活動頁面元素的ID。我知道我們可以使用$.mobile.activePage來查看當前頁面,並且我們可以使用$.mobile.activePage.attr('id')來獲取此元素的ID。但是,在應用程序的第一次加載時它是undefined。在我的具體應用,我希望用戶能夠從任何URL進入,我需要知道當前加載的頁面,以便正確初始化我的導航系統如何查找jQM中第一個pageinit的活動頁面?

$(document).bind('pageinit', function() { 
    if($.mobile.activePage !== undefined) { 
     console.log($.mobile.activePage.attr('id')); 
    } 
    else { 
     console.log('1st page load detected'); 
    } 
}); 

輸出:1st page load detected第一次加載和每個後續頁面上的ID。如何在第一次加載時獲得ID?!?

回答

11

我覺得你的問題是,那pageinit爲查詢活動頁面類爲時尚早。

如果加載第一頁,pageinit會在changePage變爲第一頁之前觸發(第一頁也通過changePage調用加載)。只有JQM中的3639行,活動頁面類才被分配給頁面。

到那時,pageinit已經不復存在了。

如果你要搶在第一頁的ID或者使用其他任何可用的page events的:

pagebeforeload = triggered before the load request (inside changepage) is made 
pageload = triggered after the page was loaded 
pagebeforechange = triggered before a changepage is made 
pagechange = triggered after changepage is done 
pagebeforeshow = triggered before the page is shown 
pageshow = triggered when the page is shown 

我會用pagebeforeshow,或者如果你要調整很多內容,儘量pagechange或pagebeforechange。

希望有幫助!

+0

是的,經常是對的。 Pageinit爲時尚早。我用pageshow測試了它,它工作正常。 – codaniel

+0

這是很棒的信息。我想將複雜的滑動導航事件附加到頁面......這是最好的鉤子? – Adam

+0

我會用$(document).on('your_swipe_event','your_swipe_element',function(){your_stuff}); - 需要Jquery 1.7.1,但綁定到文檔可以確保你的元素被綁定,即使它們不在頁面上(類似於live(),只是應該更快) – frequent

相關問題