2012-03-18 74 views
1

我正在創建一個具有listview的JQuery Mobile應用程序。我正在使用Web服務的結果填充該列表視圖。正因爲如此,在列表視圖中的項目被填充如下所示:JQuery Mobile - 動態計數泡泡

$.each(results, function (i, result) { 
    var s = "<li><h2 style='padding-left:40px;'>" + result.title + "</h2><p style='padding-left:40px;'>"; 
    s += result.subTitle; 
    s += "</p><span class='ul-li-count'>" + result.count + "</span></li>"; 

    $("#resultListView").append(s); 
}); 
$("#resultListView").listview("refresh"); 

我的列表視圖被正確填充。計數泡泡的值正在顯示。但是,UI不會渲染泡泡。有沒有辦法在列表視圖中動態構建一個包含計數泡泡的結果集?如果是這樣,怎麼樣?

謝謝!

回答

2

你的方式應該工作。我能想到的唯一的事情就是HTML無效。

無論如何,我創建了一個簡單的版本來表明它是可能的。 http://jsfiddle.net/kiliman/HDUqp/

基本上,剛建立的HTML <li/>並添加到列表中,然後調用.listview('refresh')

$('#page1').bind('pageinit', function(e, data) { 
    var n = 0; 
    $('#addResult').click(function(e) { 
     var $list = $('#resultListView'); 

     n++; 
     $('<li/>') 
      .append($('<h2>', { text: 'Title ' + n })) 
      .append($('<p>', { text: 'SubTitle ' + n })) 
      .append($('<span />', { text: n, class: 'ui-li-count'})) 
      .appendTo($list); 
     $list.listview('refresh'); 
    }); 
}); 
+0

+1由我引起你的榜樣工作,但我認真建議不要鏈接的'追加()'方法與你的例子新的jQuery對象。它更有效地構建一個HTML字符串,然後調用'append'一次。 – shanabus 2012-03-20 01:20:56

+0

我通常使用模板來生成HTML。對於我只是想確保正確的HTML創建的示例。 – Kiliman 2012-03-20 01:30:20

+0

@shanabus我認爲以這種方式使用append是完全合理的。在除了最受歡迎的網站之外的所有網站中,這一點點javascript不會影響用戶感知的性能,也不會影響服務器的操作人員。在這種情況下,可讀性比替代字符串連接更好。 – CodeMonkeyKing 2012-08-20 17:22:18