You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JS/jQuery按日期/时间排序动态生成的Div元素

解决动态生成的.note和.activity元素按时间排序的问题

你的核心问题在于当前代码仅针对.note元素做了处理,既没包含.activity元素,也没适配它的datetime属性。下面是修改后的完整代码,能同时覆盖两类元素的排序需求:

// 排序函数,可在元素动态生成后调用
function sortItemsByTime() {
  // 同时选中.note和.activity两类元素
  const items = $('.note, .activity').get();
  
  // 按时间排序:先获取对应属性的时间值,转成Date对象比较
  items.sort(function(a, b) {
    // 优先取data-datetime,没有则取datetime属性
    const timeA = new Date($(a).data('datetime') || $(a).attr('datetime'));
    const timeB = new Date($(b).data('datetime') || $(b).attr('datetime'));
    
    // 降序排列(最新的在前),要升序就反过来
    return timeB - timeA;
  });
  
  // 将排序后的元素重新插入父容器(请根据实际DOM结构修改父容器选择器)
  $('.items-container').append(items);
}

// 示例:在动态生成元素完成后调用排序
// 比如AJAX请求回调、DOM更新完成后执行
// sortItemsByTime();

关键修改点说明:

  • 扩展选择范围:用$('.note, .activity')一次性选中两类需要排序的元素,解决原代码只处理.note的问题
  • 兼容两种时间属性:通过$(el).data('datetime') || $(el).attr('datetime')的逻辑,同时适配.note的data-datetime和.activity的datetime属性
  • 统一排序逻辑:将两种属性的时间值都转为Date对象,保持原有的时间比较逻辑,确保排序结果准确

只要在动态生成.note和.activity元素之后调用sortItemsByTime(),就能实现两类元素按时间统一排序的效果。

内容的提问来源于stack exchange,提问作者bstime

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 13:25:17