Javascript / jQuery:根据数据属性值重新排序div
可能重复:
按数据属性的数值对元素进行排序
我想根据设置的数据属性重新组织div,范围从最高整数到最低。 现在,我将所有数据推送到一个数组并排序,但我不知道如何继续。 我如何使用它来重新组织父div中的div?
var prices = new Array(); $(this).children('.listing-item').each(function() { var price = parseInt($(this).attr('data-listing-price')); prices.push(price) }); prices.sort(function(a,b){return ba});
这给我一个像139,129,129,109,109,84这样的数组。 现在我的想法是使用这样的选择器再次遍历div:
$('.listing-item[data-listing-price="' + prices[0] + '"]')
但我不知道如何移动div(具有最高数据属性整数的div应该移到顶部等等。任何想法?
这是解决方案
HTML:
2 3 1 4
JS:
var divList = $(".listing-item"); divList.sort(function(a, b){ return $(a).data("listing-price")-$(b).data("listing-price") }); $("#list").html(divList);
的jsfiddle:
var s = new Array; var i = 0; var x = $(".ch").length; $(".ch").each( function() { s[i] = $(this).data("id"); i++; }); var g = s.sort(function(a,b){return ab}); for(var c = 0; c < x; c++) { var div = g[c]; var d = $(".ch[data-id="+div+"]").clone(); var s = $(".ch[data-id="+div+"]").remove(); $(".pa").append(d); }
工作小提琴
您可以调整此处描述的function: 如何使用jQuery按字母顺序对列表进行排序? 并只需更改排序function(’ <
')
30 62 11 43
在你的js(最高整数到最低):
var div = $('#foo'); var listitems = div.children('div.test').get(); listitems.sort(function (a, b) { return (+$(a).attr('data-listing-price') > +$(b).attr('data-listing-price')) ? -1 : (+$(a).attr('data-listing-price') < +$(b).attr('data-listing-price')) ? 1 : 0; }) $.each(listitems, function (idx, itm) { div.append(itm); });