javascript - 如何使用 list.js 选择下拉选项来对列表项进行排序

标签 javascript jquery sorting listjs

我正在使用 list.js 对列表项进行排序,但我想在更改 select > 选项时对项目进行排序

HTML

<div id="hotels">
    <input class="search" placeholder="Search" />
    <button class="sort" data-sort="name">
      Sort by name
    </button>

    <select class="sort" data-sort="">
      <option value="" selected>Sort by</option>
      <option value="hotelName">Hotel Name</option>
      <option value="price">Price</option>
      <option value="star">Star</option>
    </select>

    <ul class="list">
      <li>
        <h3 class="hotelName">The Umrao</h3>
        <p class="price">5002</p>
        <p class="star">3</p>
      </li>
      <li>
        <h3 class="hotelName">Welcomhotel Dwarka, New Delhi</h3>
        <p class="price">8367</p>
        <p class="star">5</p>
      </li>
      <li>
        <h3 class="hotelName">Lemon Tree Premier, Delhi Airport</h3>
        <p class="price">3978</p>
        <p class="star">4</p>
      </li>
      <li>
        <h3 class="hotelName">Red Fox Hotel, Delhi Airport</h3>
        <p class="price">9676</p>
        <p class="star">2</p>
      </li>
    </ul>
  </div>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script src="http://listjs.com/no-cdn/list.js"></script>

我已经完成了一些代码,但是当我第一次选择它时,它会出现错误,但如果我再次更改,请单击选择它,然后使用先前的值对项目进行排序,然后在下拉列表打开后,我选择它,然后它会按当前值排序.

这是我的代码

var options = {
  valueNames: [ 'hotelName', 'price', 'star' ]
};

var hotelList = new List('hotels', options);

$('.sort').change(function(){
  var selection = $(this).val();
  console.log(selection);
  $(this).attr('data-sort', selection);
});

最佳答案

您应该使用 hotelList.sort 函数:

var options = {
  valueNames: [ 'hotelName', 'price', 'star' ]
};

var hotelList = new List('hotels', options);

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

$('button.sort').click(function() {
  hotelList.sort($(this).data('sort'));  
});
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script src="http://listjs.com/no-cdn/list.js"></script>
<div id="hotels">
  <input class="search" placeholder="Search" />
  <button class="sort" data-sort="hotelName">
    Sort by name
  </button>

  <select class="sort">
    <option value="" selected>Sort by</option>
    <option value="hotelName">Hotel Name</option>
    <option value="price">Price</option>
    <option value="star">Star</option>
  </select>

  <ul class="list">
    <li>
      <h3 class="hotelName">The Umrao</h3>
      <p class="price">5002</p>
      <p class="star">3</p>
    </li>
    <li>
      <h3 class="hotelName">Welcomhotel Dwarka, New Delhi</h3>
      <p class="price">8367</p>
      <p class="star">5</p>
    </li>
    <li>
      <h3 class="hotelName">Lemon Tree Premier, Delhi Airport</h3>
      <p class="price">3978</p>
      <p class="star">4</p>
    </li>
    <li>
      <h3 class="hotelName">Red Fox Hotel, Delhi Airport</h3>
      <p class="price">9676</p>
      <p class="star">2</p>
    </li>
  </ul>
</div>

关于javascript - 如何使用 list.js 选择下拉选项来对列表项进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40094006/

相关文章:

javascript - 检测函数内的垂直滚动和窗口宽度

java - 多个列表之间的公共(public)元素

javascript - 类型错误 : Cannot read property 'replace' of undefined - VueJS

jquery - 可以将 URL 添加到 jQuery 数组并对其进行一些检查

asp.net - 当用户控件可见时执行 JavaScript

Java初学者: Array Bubble Sort

python - 根据字典中的值对字符串列表进行排序

javascript - 将参数传递给函数

javascript - polymer 核心过渡不起作用

javascript - Node.js Jade : Using conditionals within JavaScript