2012-05-16 57 views
0

我需要建立與6 li的和它們的值(空或不)的列表,然後將其追加到現有li HTML。jquery的附加數據按照順序編號

有了這些結果在返回從SQL查詢:

id_news title  category order 
------- -------- -------- ----- 
3  Alex... 12  1 
12415 Obama... 3   3 

有了這些數據,我需要通過order列表建立一個有序,和我的意思是,該清單應該是這樣的:

<ul> 
    <li data-order="1"> Alex... </li> 
    <li data-order="2"> No featured news here, click to add </li> 
    <li data-order="3"> Obama... </li> 
    <li data-order="4"> No featured news here, click to add </li> 
    <li data-order="5"> No featured news here, click to add </li> 
    <li data-order="6"> No featured news here, click to add </li> 
</ul> 

所以,我的問題是:

  • 我應該有一個預定義的列表,並添加d ata在那裏?
  • 或者,我應該在建立清單時做到這一點嗎?如果是這樣,怎麼樣?

jQuery的代碼,我現在:

var sublist = '<ul id="order_list"> <h3> Order list: </h3>'; 
$.each(data, function(index, value) { 
    sublist += '<li data-target="'+value['id_news']+'">'+value['headline']+'</li>'; 
}); 
sublist += '</ul>'; 
list.append(sublist); 

回答

2

重要的是要記住,只是讓所有的標記字符串文本你插入到DOM之前想要的方式,那將是99%的優化(不是你不是,只是指出這絕對是保持的重點)。

至於做到這一點:使用相同的代碼來創建標記,但首先排序你的「數據」數組。使用javascript數組'"sort" functionThis jsfiddle顯示它正在發生。

var data = [{order:5}, {order:45}, {order:4}, {order:200}]; 
data.sort(function(a,b){return a.order-b.order;}); 

$.each(data,function(index, value){ 
    document.write(value.order+'<br/>'); 
}); 

// output shows the array ordered by the val of the objects' order prop 

我假設你的數據數組保存與訂單屬性,它的數值對象。當然,如果該屬性被命名爲別的東西,則相應地改變,如果它是一個字符串而不是數字,那麼在函數中使用Number()以使數學運行。

+0

感謝您的努力,但那不是我的問題。 – Alex

+0

是不是你的問題關於如何將數據寫入按照其「order」屬性排序的列表中?你已經有了基於數據列出標記的代碼,雖然沒有進行排序,但我告訴過你如何對它進行排序。根據我對這個問題的理解,把這兩樣東西放在一起,這就是你的答案。如果不是,你能更具體一點嗎? –