我已经在我的代码中完成了我的订购,但是我没有重新加载整个json结果,而是希望客户端为我的div重新排序。
我订购的C#代码是:
.OrderBy(p=> p.order == 0? int.MaxValue : p.order);
这给我的结果如
我的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
进行重新排序,以便第二个成为第一个,而有0个数据的那个将在重新排序后持续。
答案 0 :(得分:2)
如果您正在使用jQuery,请查看jQuery插件TinySort。以下是其使用示例:
$(".item").tsort({ attr: 'data-sort',order:'desc'});
我认为如果你可以输出0或-1而不是null到data-sort属性,它应该把这些项放在最后。
答案 1 :(得分: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));
});
});