查找数据属性大于日期值的第一个列表项

Find first list item with data attribute greater than a date value

我有一个具有日期数据属性的项目列表,格式为 "yy/mm/dd 00:00"

我要向该列表中添加一个列表项,但我需要在行中找到它的正确位置。因此,如果我有一个日期值为“2012/04/22 21:30”的项目,那么我需要找到日期值大于该日期值的第一个列表项,然后在它之前添加列表项。

所以我会有我的列表项

<li data-date="2010/04/05 20:40"></li>
<li data-date="2011/06/05 21:40"></li>
<li data-date="2012/08/05 22:40"></li>
<li data-date="2013/10/05"></li>

然后我需要将一个新的动态列表项插入到上面的列表中

<li data-date="2012/04/22 21:30"></li>

如何用 Jquery 解决这个问题?

我认为你应该这样处理需求,

  1. 调用所有节点,获取它们的值并存储在一个数组中。然后 将所有日期时间值转换为秒。
  2. 根据您的要求重新排列 ASC/DESC 顺序。
  3. 再次将值转换为原始格式,封装 具有 <li></li> 标记和其他属性的值。
  4. 用旧的替换新生成的 HTML。

我不确定这是否是最好的方法,但这是一个可行的解决方案。

您需要比较要插入的新 li 的属性 data-date 与 DOM 中已有的列表项。

$(function() {
  var c = 0;
  var a = '<li data-date="2011/06/05 21:40">2011/06/05 21:40</li>';
  var aa = Date.parse($(a).attr('data-date'));
  $('li').each(function(i, v) {
    var aaa = ($(v).attr('data-date'));
    var b = Date.parse(aaa);
    if (b > aa) {
      $(a).insertBefore(v);
      c = 1;
      return false;
    }
  })
  if (!c) {
    $('ul').append(a);
  }
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
  <li data-date="2010/04/05 20:40">2010/04/05 20:40</li>
  <li data-date="2012/08/05 22:40">2012/08/05 22:40</li>
  <li data-date="2013/10/05 22:40">2013/10/05 22:40</li>
</ul>