我一直試圖讓這個工作4天,沒有運氣。Jquery mobile ui-btn-active在導航欄中
我有一個非常簡單的jquery移動應用程序。 該應用程序有一個標題,內容和頁腳。 頁腳正在'pagecreate'事件上動態生成,因爲它始終是相同的,我不想在每個頁面都有HTML。
所以我做這樣的事情:
$(document).delegate('[data-role="page"]', 'pagecreate', function (e) {
DrawHeader($(this));
DrawFooter($(this));
SetFooterEvents($(this));
SetActiveFooter($(this));
});
DrawHeader()和DrawFooter()簡單地將頁眉div預先寫入頁面並附加頁腳div。 SetFooterEvents()設置頁腳導航欄按鈕的onclick事件,並且SetActiveFooter()爲SUPPOSED以將ui-btn-active設置爲當前活動頁腳鏈接。 爲此,我已將data-active-footer屬性添加到頁面div,將data-name屬性添加到導航欄元素。我正在根據頁面中的數據活動頁腳搜索當前元素並應用ui-btn活動類。
function SetActiveFooter(page) {
page.children('div[data-role="footer"]')
.find('a[data-name="' + page
.attr("data-active-footer") + '"]').addClass("ui-btn-active");}
到目前爲止好。
現在,假設我已經更改爲一個頁面並且導航欄亮起(它已成功接收ui-btn-active類),並且我正在點擊上一頁,導航欄中亮起的項目不會換回來!
如果我再次點擊頁面(即:更改爲第二頁[corrent lit],更改回第一頁[第二頁仍然點亮],然後再次點擊第一頁),它會點亮導航欄按鈕。
我發現當我更改'pagecreate'事件中當前頁面的導航欄時,jqm也更改了上一頁的導航欄。 我試圖用'pageshow'事件來覆蓋這種行爲,即嘗試將ui-btn-active類應用於導航欄中的當前元素,但問題在於$(this)和e.currentTarget對象在'pageshow'事件中不要包含腳手架元素!
$(".ui-page").live('pageshow', function (e) {
alert($(this).children('div').length); // returns 2!
alert($(this).children('div[data-role="footer"]').length); //returns 0
alert($(e.currentTarget).children('div').length); // returns 2!
alert($(e.currentTarget).children('div[data-role="footer"]').length); //returns 0});
任何想法?
謝謝。