2011-08-08 207 views
3

我有列表視圖刷新適用於負載後動態生成的列表,除了一個問題。列表中的最後一個<li>標記沒有得到適用於它的任何樣式。jQuery手機列表視圖刷新

刷新實際上將ui-btn ui-btn-icon-right ui-li ui-corner-bottom ui-btn-up-c類添加到倒數第二個<li>標記。

任何想法,爲什麼這會發生?

附是動態生成列表中的功能:

function createSidebarEntry(marker, name, phone, address, distance) { 
    var saddr = document.getElementById('addressInput').value; 
    var li = document.createElement('li'); 
    var html = '' + name + ' (' + distance.toFixed(1) + ' miles)' + address + phone +'<a href="http://maps.google.com/maps?saddr='+ saddr +'&daddr=' + address +'" /></a>'; 
    li.innerHTML = html; 

    $('#locationList').listview('refresh'); 

    return li; 

} 
+0

請編輯你的問題,並添加一些你正在使用的代碼 –

+0

正如Phill所說,一些代碼請!此外,請務必驗證您的標記:可能存在某種錯誤,這意味着jQM無法正確執行「listview.refresh」調用。 – Ben

+0

謝謝你的迴應。我發佈了負責創建列表的函數。我們還沒有將整個腳本轉換爲jQuery,但將來會出現。 – Taylor

回答

0

我也有一些問題,列表視圖刷新功能(JQM 1.0β1的)。 在IE8上,情況更糟。

所以我的解決方案只是檢查jqm對<li>標籤做了什麼。
並直接插入after-refresh-html-code。

不是一個優雅的解決方案,但它的工作原理。

+0

想盡可能保持腳本儘量瘦,因爲它將用作位置查找器,已經有一些沉重的JS正在使瀏覽器崩潰。 – Taylor

2

從你的代碼看來,你將li添加到你的listview之外的那個函數中,但是你正在調用.listview('refresh');在函數內部。

所以它只是發生在您的所有LIS工作,因爲除了最後一個,因爲它總是以下 LI導致以正確的外觀&感覺被refereshed名單。

解決方案:只需調用.listview('refresh'); AFTER您已添加此功能之外的最後一個LI。它也會有改善性能的效果,因爲一旦完成動態添加所有新的LI元素,只會刷新listview。

2

打電話.listview("refresh")沒有爲我工作。它創建了一個基本列表,沒有造型。

這是對我工作:

function updateData() 
{ 
    $.ajax({ 
     url: '@Html.Raw(ajaxUrl)', 
     async: false, 
     beforeSend: function() { $.mobile.showPageLoadingMsg(); }, 
     complete: function() 
     { 
      $.mobile.hidePageLoadingMsg(); 
      $("ul:jqmData(role='listview')").listview(); 
     }, 
     success: function (data, textStatus, jqXHR) 
     { 
      $('#myDiv').html(data); 
      $('#myDiv').trigger("create"); // *** THIS IS THE KEY *** 
     } 
    }); 
} 
2

有時你需要調用刷新前實例列表視圖查看。

Chrome應該給你一個錯誤,說你不能將刷新應用到未實例化的列表視圖。

你可以試試這個,它可以解決你的問題(它解決了這個完全相同的問題)。

$('#locationList').listview().listview('refresh');