Как отсортировать div по дате контента в <span> - PullRequest
3 голосов
/ 30 января 2012

Я пытаюсь отсортировать div по дате контента на промежутке при загрузке страницы ... У меня есть сортировка.Но не по дате.

Вот мой фрагмент кода:

function sortDescending(a, b) {
  var date1 = $(a).find("span").text();
  date1 = date1.split('/');
  date1 = new Date(date1[2], date1[1] - 1, date1[0]);
  var date2 = $(b).find("span").text();
  date2 = date2.split('/');
  date2 = new Date(date2[2], date2[1] - 1, date2[0]);

  return date1 < date2 ? 1 : -1;
};
$(document).ready(function() {
  $('#container .element').sort(sortDescending).appendTo('#container');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="container">

  <div class="element">
    <p class="title">TEST 03</p>
    <span>01/2010</span>
  </div>

  <div class="element">
    <p class="title">TEST 01</p>
    <span>01/2012</span>
  </div>

  <div class="element">
    <p class="title">TEST 04</p>
    <span>01/2009</span>
  </div>

  <div class="element">
    <p class="title">TEST 02</p>
    <span>01/2011</span>
  </div>

</div>

Я знаю, что мне нужна функция, чтобы выяснить, является ли содержимое датой.Просто не знаю как ...

Ответы [ 2 ]

1 голос
/ 30 января 2012

Похоже, что текст <span> имеет только формат мм / гггг, тогда как ваши конструкторы даты ожидают 3 элемента в результирующем массиве.

date1 = date1.split('/'); // -> [ "01", "2009" ]
date1 = new Date( 
    date1[2]       /* undefined */, 
    date1[1] -1    /* year */ , 
    date1[0]       /* month */ 
); 

Вам нужно немного изменить конструктор Date:

date1 = new Date(date1[1], date1[0] -1, 1); 
0 голосов
/ 30 января 2012

Использование сортировки по пузырькам:

$(document).ready(

    function() {
        var divArray = $("div#container>div.element");

        for (j = divArray.length; j > 0; j--) {
            for (i = 0; i < j - 1; i++) {
                if ($(divArray[i]).children("span").html() > $(divArray[i + 1]).children("span").html()) {
                    temp = $(divArray[i]).html();
                    $(divArray[i]).html($(divArray[i + 1]).html());
                    $(divArray[i + 1]).html(temp);
                }
            }
        }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...