【问题标题】:How to sort list item by selecting dropdown option using list.js如何通过使用 list.js 选择下拉选项对列表项进行排序
【发布时间】:2017-02-26 21:17:18
【问题描述】:

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

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);
});

【问题讨论】:

    标签: javascript jquery sorting listjs


    【解决方案1】:

    您应该为此使用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>

    【讨论】:

    • sort() 是 list.ja 的 jquery 的函数
    • 还有一件事是有什么方法可以从低到高或从 A 到 Z 排序,例如在选择中有两个价格选项&lt;option value="price-low-high"&gt; Price Low to High&lt;/option&gt;&lt;option value="price-high-low"&gt; Price High to Low&lt;/option&gt;
    猜你喜欢
    • 1970-01-01
    • 2018-12-28
    • 1970-01-01
    • 2015-09-22
    • 1970-01-01
    • 1970-01-01
    • 2019-05-28
    • 1970-01-01
    • 2015-08-15
    相关资源
    最近更新 更多