如何使jQuery排序工作与更多的字符

How to make jQuery sorting work with more characters?

本文关键字:字符 工作 何使 jQuery 排序      更新时间:2023-09-26

使用以下脚本对数据属性

进行排序HTML:

<ul id="list">
    <div>
      <button id="sort" type="button">Sort</button>
    </div>
<li class="items" data-sort="1111111111.1111145000">2</li>
<li class="items" data-sort="1111111111.1111144000">1</li>
</ul>

JS:

$( document ).ready(function() {
  var $wrapper = $('#list');
  $( "#sort" ).click(function() {
      $wrapper.find('.items').sort(function (a, b) {
      return +a.getAttribute('data-sort') - +b.getAttribute('data-sort');
      })
      .appendTo( $wrapper );
  });
});

小提琴:https://jsfiddle.net/vnk91or8/1/

问题是,似乎可以排序的最大字符数是21。只要我从这个例子中的data-sort属性中删除一个数字,一切工作。

我的脚本有时会生成超过22-25个字符,这是我无法改变的。有没有办法让这个工作与更多的字符?

我建议你把数字分开,然后再比较,这样:

var $wrapper = $('#list');
$("#sort").click(function() {
    $wrapper.find('.items').sort(function(a, b) {
        var splitA = $(a).data('sort').split('.');
        var splitB = $(b).data('sort').split('.');
        return splitA[0] == splitB[0] ? splitA[1] - splitB[1] : splitA[0] - splitB[0];
    }).appendTo($wrapper);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="list">
    <li class="items" data-sort="1111111111.1111145000">2</li>
    <li class="items" data-sort="1111111111.1111144000">1</li>
</ul>
<div>
    <button id="sort" type="button">Sort</button>
</div>

也在JSFiddle