0

コードで順序付けを行いましたが、json の結果全体をリロードする代わりに、クライアント側で div の順序を変更したいと考えています。

注文用の私のC#コードは次のとおりです。

.OrderBy(p=> p.order == 0? int.MaxValue : p.order);

これにより、次のような結果が得られます

  • 1
  • 2
  • 3
  • 4
  • 0
  • 0
  • 0

私のHtmlスキーマは

<div class="item" data-sort="0" id="5051fb7c746eed1bf05309db">
 <span>Some values</span>
 <span>Some values</span>
  <div class="subgroups">
    <div class="item" data-sort="null" id="5060de4a746eed1b44cc6e90"></div>
  </div> <!-- closing subgroups -->
</div> <!-- closing main div which need to be sorted -->

<div class="item" data-sort="2" id="5051fb7c746eed1bf05309db">
  <span>Some values</span>
  <span>Some values</span>
  <div class="subgroups">
    <div class="item" data-sort="null" id="5060de4a746eed1b44cc6e90"></div>
  </div> <!-- closing subgroups -->
</div> <!-- closing main div which need to be sorted -->

<div class="item" data-sort="0" id="5051fb7c746eed1bf05309db">
  <span>Some values</span>
  <span>Some values</span>
  <div class="subgroups">
    <div class="item" data-sort="null" id="5060de4a746eed1b44cc6e90"></div>
  </div> <!-- closing subgroups -->
</div> <!-- closing main div which need to be sorted -->

divこれらの s を並べ替えて、2 番目のものが最初になり、並べ替え時にデータが 0 のものが最後になるようにするにはどうすればよいですか。

4

2 に答える 2

2

jQueryを使用している場合は、jQuery プラグインTinySortを参照してください。以下はその使用例です。

$(".item").tsort({ attr: 'data-sort',order:'desc'});

null の代わりに 0 または -1 を data-sort 属性に出力できる場合は、それらの項目を最後に配置する必要があると思います。

于 2012-09-25T19:31:41.553 に答える
0

次のようにすることもできます。

すべての div を親 div 内に配置します

<div id="parentDiv">
..
</div>

次に、このように並べ替えることができます

$(function(){

  function sort_comp(a, b){
    var k1 = parseInt($(a).attr("data-sort"),10);
    if(k1 === 0) k1 = Number.MAX_VALUE;
    var k2 = parseInt($(b).attr("data-sort"),10);
    if(k2 === 0) k2 = Number.MAX_VALUE;
    return (k1-k2);
  }

  var arr = $.makeArray($("#parentDiv > .item"));
  arr.sort(sort_comp);
  $("#parentDiv > .item").remove();
  $(arr).each(function(){
    $("#parentDiv").append($(this));
  });
});
于 2012-09-25T20:09:06.300 に答える