How to order (sort) a
  • list with numeric content?
  • 后端 未结 6 2050
    一个人的身影
    一个人的身影 2020-12-19 05:14

    I have a list as below that is created dynamically:

    相关标签:
    6条回答
    • 2020-12-19 05:28

      Here is a possible way to do it:

      $(function() {
        var elems = $('ul').children('li').remove();
        elems.sort(function(a, b) {
          return parseInt($(a).text()) > parseInt($(b).text());
        });
        $('ul').append(elems);
      });
      <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
      <ul>
        <li>20</li>
        <li>10</li>
        <li>5</li>
        <li>3</li>
        <li>32</li>
        <li>25</li>
        <li>6</li>
        <li>12</li>
        <li>8</li>
      </ul>

      0 讨论(0)
    • 2020-12-19 05:30

      Below should do the trick:

      $(function() {
        $('button').click(function() {
          var liContents = [];
          $('ul li').each(function() {
            liContents.push(parseInt($(this).text(), 10));
          });
          liContents.sort(numOrdDesc);
          $('ul li').each(function() {
            $(this).text(liContents.pop());
          });
        });
      });
      
      function numOrdDesc(a, b) {
        return (b - a);
      }
      <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
      <ul>
        <li>20</li>
        <li>10</li>
        <li>5</li>
        <li>3</li>
        <li>32</li>
        <li>25</li>
        <li>6</li>
        <li>12</li>
        <li>8</li>
      </ul>
      
      <button>Sort</button>

      0 讨论(0)
    • 2020-12-19 05:42
      var li = $('ul li');
      li.sort(function(a, b) {
          if(parseInt($(a).text()) > parseInt($(b).text()))
              return 1;
          else return -1;
      });
      $('ul').empty().html(li);
      
      0 讨论(0)
    • 2020-12-19 05:47

      Using sortContent plugin ,everything will be easy,clean and ready for reuse :

       $('ul').sortContent({helper:myhelper});
      

      Known that :

      myhelper=function(e){
         return $('a',$(e)).attr('href');
      }
      

      DEMO


      If you want to discover other options , visit Plugin HOMEPAGE

      0 讨论(0)
    • 2020-12-19 05:48

      You can do:

      var listItems = [];
      $("#list li").each(function() {
        console.log($(this).text());
        listItems.push(parseInt($(this).text()));
      });
      
      listItems.sort(function(a, b) {
        return a - b
      });
      
      $("#list").html("");
      $.each(listItems, function(i, v) {
        $("#list").append($("<li>" + v + "</li>"));
      });
      <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
      <ul id="list">
        <li>20</li>
        <li>10</li>
        <li>5</li>
        <li>3</li>
        <li>32</li>
        <li>25</li>
        <li>6</li>
        <li>12</li>
        <li>8</li>
      </ul>

      0 讨论(0)
    • 2020-12-19 05:49

      There are jQuery plugins to handle this as well. Check out TinySort

      0 讨论(0)
    提交回复
    热议问题