首页 > 解决方案 > 列表

  • 使用 load() 时排序不起作用
  • 问题描述

    li我里面有几个ul,我使用这段代码按 data-percentage 属性按升序对它们进行排序

    $(function() {
      $(".alll li").sort(sort_li).appendTo('.alll');
      function sort_li(a, b) {
        return ($(b).data('percentage')) > ($(a).data('percentage')) ? 1 : -1;
      }
    });

    但是当我使用从另一个页面$(".dayss").load("days0.php");加载相同li但具有不同数据百分比的页面时,因此当我想对其进行排序时,排序但在第一次单击时按升序排列,在第二次单击时按降序排列,第三次再次按升序排列。不知道是什么问题,求大神解答,谢谢

    标签: javascripthtmljquery

    解决方案


    load() 与 document.ready 无关,因此您的代码很可能在加载完成之前执行。所以你需要在完成后进行排序。

    var sortDirection = 1;
    function sortLis () {
      function sort_li(a, b) {
        return ($(b).data('percentage')) > ($(a).data('percentage')) ? sortDirection : -sortDirection;
      }
      $(".alll li").sort(sort_li).appendTo('.alll');
    }
    
    $(sortLis);
    $(".dayss").load("days0.php", function () {
      sortDirection = 1;
      sortLis();
    });
    $(document).on("click", ".sortButton", function () {
      sortDirection * -1;
      sortLis();
    })
    

    推荐阅读