Javascript 如何根据数据属性对父div中的子div进行排序?

Javascript 如何根据数据属性对父div中的子div进行排序?,javascript,html,jquery,Javascript,Html,Jquery,我试图使用jQuery对父div中的子divs进行排序,但是我的代码根本不起作用。我的意图是按升序对子div元素进行排序。目前,我的模板结构是: 我使用此函数根据数据年属性对子divs进行排序: $(函数(){ $('.year')。在('click',函数(e)上{ e、 预防默认值(); $('#parent').find('.child').sort(函数(a,b){ var contentA=parseInt($(a).attr('data-year'); var contentB=p

我试图使用jQuery对父div中的子
div
s进行排序,但是我的代码根本不起作用。我的意图是按升序对子
div
元素进行排序。目前,我的模板结构是:

我使用此函数根据
数据年
属性对子
div
s进行排序:

$(函数(){
$('.year')。在('click',函数(e)上{
e、 预防默认值();
$('#parent').find('.child').sort(函数(a,b){
var contentA=parseInt($(a).attr('data-year');
var contentB=parseInt($(b).attr('data-year');
返回值(contentA>contentB)?-1:(contentA

排序
最新的
名称
年
2010年,INS2
2000年,INS3
2020年,ins 1

您需要在排序功能中交换运算符
contentB)?1:0;
}).appendTo(“#parent”);
});
});

排序
最新的
名称
年
2010年,INS2
2000年,INS3
2020年,ins 1

实际上,如果您查看文档。您可以发现,不需要三值、小于或大于运算或其他任何运算。如果你想对数组进行排序(或者在你的特定情况下数组,比如HTML集合元素),你应该总是考虑这两个语句:

如果
compareFunction(a,b)
返回的值小于
0
,则将
a
排序到低于
b
的索引(即
a
排在第一位)

如果
compareFunction(a,b)
返回的值大于
0
,则将
b
排序为低于
a
的索引(即
b
排在第一位)

注意:您案例中的
比较函数是
函数(a,b){…}

所以你只需要坚持第一条语句,然后从
a
中减去
b
,就这样了。

那么您的最终代码应该是这样的:

$(函数(){
$('.year')。在('click',函数(e)上{
e、 预防默认值();
$('#parent').find('.child').sort(函数(a,b){
var contentA=parseInt($(a).attr('data-year');
var contentB=parseInt($(b).attr('data-year');
返回contentA-contentB
}).appendTo(“#parent”);
});
});

排序
最新的
名称
年
2010年,INS2
2000年,INS3
2020年,ins 1