jquery根据订单号将数据附加到html

时间:2012-05-16 12:54:15

标签: jquery html html-lists

我需要构建一个包含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);

1 个答案:

答案 0 :(得分: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()以使数学运行。