Как отсортировать asc и desc с помощью list.js

Я использую list.js для создания параметров поиска и сортировки с опциями выбора в выпадающем меню. Вот мой рабочий код:

JS:

var options = {
  valueNames: [ 'name' ]
};
var myList = new List('mylist', options);

$('select.sort').change(function(){
  var selection = $(this).val();
  myList.sort(selection);
});

HTML

<select class="sort">
    <option value="" selected>Sort by</option>
    <option value="name">Sort by Name</option>
</select>

Теперь я пытаюсь отсортировать "имя" с помощью ASC и DESC, например -

<select class="sort">
    <option value="" selected>Sort by</option>
    <option value="name">Name ASC</option>
    <option value="name">Name DESC</option>
</select>

Я нашел это в документах,

listObj.sort('name', { order: "asc" });
listObj.sort('name', { order: "desc" });

Но я не понимаю, как это сделать с помощью раскрывающегося списка. Можете ли вы помочь, пожалуйста?

1 ответ

Решение

Javascript:

$('.sort').on('change', function() {
   var col = $('.sort.column').val();
   var dir = $('.sort.direction').val();
   if ( col !== "" && dir != "" )
   {
       myList.sort(col, { order: dir });
   }
});

HTML:

<select class="sort column">
    <option value="" selected>Sort by</option>
    <option value="name">Sort by Name</option>
</select>
<select class="sort direction">
    <option value="" selected>Sort by</option>
    <option value="asc">ASC</option>
    <option value="desc">DESC</option>
</select>

Спасибо @FrankerZ!

В ванильном JS с 1 раскрытием.

  <select id="sort">
    <option value="">Select an option</option>
        <option value="name" sort="asc">Name ascending</option>
        <option value="name" sort="desc">Name descending</option>
        <option value="born" sort="asc">Born ascending</option>
  </select>
    var sort    = document.querySelector("#sort"); 
    sort.addEventListener("change", sortBySelect, false); 

    function sortBySelect(event) {
        selected = event.target.selectedOptions[0];
        sort = selected.attributes.value.value;
        dir = selected.attributes.sort.value;
        userList.sort(sort, { order: dir });
    }

Примечание: я просто новичок в JavaScript. Так что, если вы видите какие-либо улучшения возможно, не стесняйтесь ответить.

Другие вопросы по тегам