0

我需要用 6li和它们的值(是否为空)构建一个列表,然后将其附加到现有的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);
4

1 回答 1

2

重要的是要记住,在插入 DOM 之前,按照你想要的方式获取所有标记字符串文本,这将是 99% 的优化(不是说你不是,只是指出这绝对是重点保持)。

至于实现这一点:使用与创建标记相同的代码,但首先对“数据”数组进行排序。为此,请使用 javascript 数组的“排序”功能这个 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() 以使数学工作。

于 2012-05-16T13:17:50.510 回答