我需要构建一个包含6个li
及其值(空或不是)的列表,然后将其附加到现有li
。
从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>
所以,我的问题是:
我现在拥有的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);
答案 0 :(得分:2)
重要的是要记住在插入DOM之前以你想要的方式获取所有标记字符串文本,这将是优化的99%(不是你不是,只是指出那是绝对是重点保持)。
至于完成:使用与创建标记相同的代码,但首先对“数据”数组进行排序。使用javascript数组'"sort" function。 This 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()以使数学运行。