一尘不染

在jQuery中基于属性“数据排序”对div进行排序?

javascript

如果我有几个股利:

<div data-sort='1'>div1</div>
<div data-sort='4'>div4</div>
<div data-sort='8'>div8</div>
<div data-sort='12'>div12</div>
<div data-sort='19'>div19</div>

我动态创建div:

<div data-sort='14'>div1</div>
<div data-sort='6'>div1</div>
<div data-sort='9'>div1</div>

如何才能使它们仅按顺序排序到已加载的div中,而不必重新加载所有div?

我认为我需要在屏幕上构建一个所有div的数据排序值的数组,然后查看新div的位置,但是我不确定这是否是最佳方法。


阅读 435

收藏
2020-05-01

共1个答案

一尘不染

使用这个功能

   var result = $('div').sort(function (a, b) {

      var contentA =parseInt( $(a).data('sort'));
      var contentB =parseInt( $(b).data('sort'));
      return (contentA < contentB) ? -1 : (contentA > contentB) ? 1 : 0;
   });

   $('#mylist').html(result);

您可以在添加新的div后立即调用此函数。

如果要在div中保留javascript事件,请不要像上面的示例一样使用html replace。而是使用:

$(targetSelector).sort(function (a, b) {
    // ...
}).appendTo($container);
2020-05-01