0

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);
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 に答える