Задать вопрос
@VannDogg
Trainee Wordpress Developer

Как сделать сортировку html элементов по атрибуту data-*?

Привет всем! Есть проблема - нужно сделать возможность сортировать html элементы по data- атрибуту.
Пример: есть у меня элемент с идентификатором body в нем несколько блоков классом listing-item и атрибутом data-event-date.

< div id="body" >
< div class="listing-item" data-event-date="2017-05-02" >< /div >
< div class="listing-item" data-event-date="2018-01-07" >< /div >
< div class="listing-item" data-event-date="2017-06-05" >< /div >
< div class="listing-item" data-event-date="2018-01-03" >< /div >
< div class="listing-item" data-event-date="2017-08-08" >< /div >
< /div >

Нужно сделать так, чтобы по клику они сортировались по атрибуту data-event-date, то есть по его значению. Сортироваться должно по убыванию. Находил кучу решений, но ни одно не работало у меня. Помогите, кто чем может.
  • Вопрос задан
  • 1607 просмотров
Подписаться 2 Простой 1 комментарий
Решение пользователя Юрий К ответам на вопрос (2)
@kapitan7830
<div id="body">
  <div class="listing-item" data-event-date="2017-05-02">2017-05-02</div>
  <div class="listing-item" data-event-date="2018-01-07">2018-01-07</div>
  <div class="listing-item" data-event-date="2017-06-05">2017-06-05</div>
  <div class="listing-item" data-event-date="2018-01-03">2018-01-03</div>
  <div class="listing-item" data-event-date="2017-08-08">2017-08-08</div>
</div>


<script>
  var body = document.getElementById("body");
  var listElms = body.getElementsByClassName("listing-item");
  var sortedElms = Array.prototype.slice.call(listElms).sort(function(a, b) { 
    return a.dataset.eventDate > b.dataset.eventDate
  });

  for (var i = 0; i < sortedElms.length; i++) {
    body.appendChild(sortedElms[i]);
  }
</script>
Ответ написан
Комментировать