Javascript 在jQuery中,如何按最近的日期时间重新排列数据属性上的子div?

Javascript 在jQuery中,如何按最近的日期时间重新排列数据属性上的子div?,javascript,jquery,html,date,each,Javascript,Jquery,Html,Date,Each,我已经为每个部分设置了自己的类别名称,并希望根据数据属性重新排列其子div元素,该数据属性按最近发布的日期时间排序,从顶部到底部依次排列 我正在尝试循环遍历其父元素的每个子元素,但函数RebeasedVideosByRecentUploads不起作用。我调试了它,它会停在这行代码$'.段'+ALPHA_CLASS_NAME+'.thumb.video thumb'.然后完全跳过该函数。代码中没有错误,所以我不确定为什么会出现这种情况 var日期=[]; var_old; var ALPHA_C

我已经为每个部分设置了自己的类别名称,并希望根据数据属性重新排列其子div元素,该数据属性按最近发布的日期时间排序,从顶部到底部依次排列

我正在尝试循环遍历其父元素的每个子元素,但函数RebeasedVideosByRecentUploads不起作用。我调试了它,它会停在这行代码$'.段'+ALPHA_CLASS_NAME+'.thumb.video thumb'.然后完全跳过该函数。代码中没有错误,所以我不确定为什么会出现这种情况

var日期=[]; var_old; var ALPHA_CLASS_NAME=.ALPHA; var BRAVO_CLASS_NAME=.BRAVO; var CHARLIE_CLASS_NAME=.CHARLIE; 函数sortDatesa,b{ 返回new Dateb.getTime-new Datea.getTime; } 函数重新排列VideosByRecentUploads{ 如果$this.parent'.section'+ALPHA_CLASS_NAME{ $'.section'+ALPHA_CLASS_NAME+'.thumb.video缩略图'.eachfunctioni{ _old=$this.parent; dates.push$this.data'date'; 排序=日期。排序排序日期; _新=$.insertBefore\u old; $.eachsorted,functioni,val{ $'div[data date='+val+']'。追加到_new; }; _旧的。移除; }; }否则,如果$this.parent'.section'+BRAVO_CLASS_NAME{ $'.section'+BRAVO\u CLASS\u NAME+'.thumb.video thumb'.eachFunction I{ _old=$this.parent; dates.push$this.data'date'; 排序=日期。排序排序日期; _新=$.insertBefore\u old; $.eachsorted,functioni,val{ $'div[data date='+val+']'。追加到_new; }; _旧的。移除; }; }否则,如果$this.parent'.section'+CHARLIE_CLASS_NAME{ $'.section'+CHARLIE_CLASS_NAME+'.thumb.video thumb'.eachFunction I{ _old=$this.parent; dates.push$this.data'date'; 排序=日期。排序排序日期; _新=$.insertBefore\u old; $.eachsorted,functioni,val{ $'div[data date='+val+']'。追加到_new; }; _旧的。移除; }; } } 重新安排最近上传的视频; 阿尔法 A1-4/2012 A2-6/2011 A3-3/2013 A4-1/2011 A5-5/12/2016 A6-5/19/2016 A7-2/2020 A8-5/31/2016 A9-1/2014 布拉沃河 B1-3/2013 B2-1/2011 B3-5/12/2016 B4-5/19/2016 查理 C1-4/2012 C2-6/2011 C3-5/31/2016 C4-1/2014
这有点过于复杂了。要对元素进行排序,可以使用sort方法。为该方法提供一个函数,该函数接受两个参数,这两个参数是迭代中要相互比较的元素。将数据日期值转换为日期对象并对其进行比较,根据最新的参数返回1或-1

为了保持逻辑干涸,您可以循环遍历所有节.thumb容器并对其进行单独排序。请尝试以下操作:

$'section.thumb'。每个函数{ $this.查找'div'。排序函数a,b{ 返回新日期$a.data'Date'<新日期$b.data'Date'?1:-1; }.附于此; }; 阿尔法 A1-4/2012 A2-6/2011 A3-3/2013 A4-1/2011 A5-5/12/2016 A6-5/19/2016 A7-2/2020 A8-5/31/2016 A9-1/2014 布拉沃河 B1-3/2013 B2-1/2011 B3-5/12/2016 B4-5/19/2016 查理 C1-4/2012 C2-6/2011 C3-5/31/2016 C4-1/2014
这有点过于复杂了。要对元素进行排序,可以使用sort方法。为该方法提供一个函数,该函数接受两个参数,这两个参数是迭代中要相互比较的元素。将数据日期值转换为日期对象并对其进行比较,根据最新的参数返回1或-1

为了保持逻辑干涸,您可以循环遍历所有节.thumb容器并对其进行单独排序。请尝试以下操作:

$'section.thumb'。每个函数{ $this.查找'div'。排序函数a,b{ 返回新日期$a.data'Date'<新日期$b.data'Date'?1:-1; }.附于此; }; 阿尔法 A1-4/2012 A2-6/2011 A3-3/2013 A4-1/2011 A5-5/12/2016 A6-5/19/2016 A7-2/2020 A8-5/31/2016 A9-1/2014 布拉沃河 B1-3/2013 B2-1/2011 B3-5/12/2016 B4-5/19/2016 查理 C1-4/2012 C2-6/2011 C3-5/31/2016 C4-1/2014
谢谢。我对这段代码的一个问题是,在执行这段代码之后,我通过jQuery将新的附加div打印/附加到类别中,我注意到新div刚刚打印并附加到顶部,而事实上,日期比已经打印的日期早。我希望能够再次检查所有子div在类别中插入其日期时间属性并重新排列。有办法吗?当然,只需将此逻辑放入函数中,并在添加新div时调用它。谢谢。此代码的一个问题是,在执行此代码后,我有了新的附加div
在通过jQuery打印/附加到类别中时,我注意到需要将刚刚打印的新div附加到顶部,而事实上,日期比已经打印的日期早。我希望能够根据类别中的date-time属性重新检查所有子div,然后重新排列。有办法吗?当然,只要把这个逻辑放在一个函数中,并在添加新div时调用它