Javascript 如何根据数据属性对父div中的子div进行排序?
我试图使用jQuery对父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
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