1
我遇到了頁面上的動態元素在「pageshow」上更新的問題。如果用戶直接訪問網址或從網站的其他位置導航到此網站,則此功能非常有用。問題是,如果我直接進入該頁面,或刷新它(例如:mydomain.com/#somepage.html)失敗,我得到的錯誤:jQuery Mobile - 直接訪問哈希URL導致動態元素失敗
上在初始化之前selectmenu未捕獲無法調用方法;試圖調用方法'刷新'
我在一個函數中調用刷新,該函數使用ajax內容填充選擇列表。
我看過使用另一個事件而不是pageshow,但沒有一個看起來合適。
這裏是代碼的相關位:
//attach all listeners on dynamically loaded pages here
$('[data-role=page]').live('pageshow', function(event, ui){
//do stuff (get data, get select options, index of current selected
$('select.myselect').fillSelect(itemsArray,indexofSelected);
...
)}; //pageshow
這是我告填充選擇功能:
$.fn.fillSelect = function (items,index){
//generically fills a select list - requires an array and target element optional index of selected element
this.find('option').remove();
var options = "";
for (var i = 0; i < items.length; i++) {
var selected = (index == i) ? 'selected="selected"' : "" ;
options += '<option '+selected+'value="'+items[i]+'">'+items[i]+'</option>';
}
//assembling html first cause appends are expensive
this.append(options).selectmenu('refresh', true);
return this;
}
再次,這是專門針對打算直接哈希網址,但完美的作品除此以外。
太棒了。這是問題所在,並在我參考JQM之前解決了這個問題。謝謝你! – David 2011-03-28 13:08:56