按SPAN中的数字对DIV排序

沼泽

我正在尝试根据子跨度中的数字对div进行排序。

现在,我尝试根据SPAN中带有“点”类的值对具有“团队”类的DIV进行排序。

但是,当我触发排序时,什么也没有发生。

//避免多余的文本到文本代码系统// lorem ipsum胡萝卜,生态番茄汤。直到足球,而且化妆很多。Vestibulum nibh裙子胡萝卜资产。洛雷姆的整个足球比赛。但这并没有使你感到厌烦,压力和压力。即使在这里星期一辣椒。对于排球保留说下巴,但现在扣除额很大。Semper在每个地区的拍卖中都非常需要谨慎对待。米饭色拉,可作为化妆品,但可作为冰箱的成员。

jQuery.fn.orderBy = function(keySelector)
    {
        return this.sort(function(a,b)
        {
            a = keySelector.apply(a);
            b = keySelector.apply(b);
            if (a > b)
                return 1;
            if (a < b)
                return -1;
            return 0;
        });
    };

var collection = $(".team");

    $("#sort").on('click', function(event){
      collection.each(function() {
        $(this).orderBy(function() {return +$(this).next('.points').text();}).appendTo($(this).closest('.group_table'));
      });
    });
        
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div class="container">
  <div class="group_table">
    <div>
      <h1>FOO</h1>      
      </div>
      <div>
        <span style="border-bottom:1px solid #000;">points</span>
      </div>
      
      <div class="team">      
        <span>Cucumber</span>
        <span class="points" id="p1r1">6</span>
      </div>
      
      <div class="team">      
        <span>Bacon</span>
        <span class="points" id="p2r1">3</span>
      </div>
      
      <div class="team">      
        <span>Chicken</span>
        <span class="points" id="p3r1">0</span>
      </div>
      
      <div class="team">      
        <span>Porridge</span>
        <span class="points" id="p4r1">9</span>
      </div>
  </div>
  
  <div class="group_table">
    <div>
      <h1>BAR</h1>      
      </div>
      <div>
        <span style="border-bottom:1px solid #000;">points</span>
      </div>
      
      <div class="team">      
        <span>Cucumber</span>
        <span class="points" id="p1r2">3</span>
      </div>
      
      <div class="team">      
        <span>Bacon</span>
        <span class="points" id="p2r2">0</span>
      </div>
      
      <div class="team">      
        <span>Chicken</span>
        <span class="points" id="p3r2">9</span>
      </div>
      
      <div class="team">      
        <span>Porridge</span>
        <span class="points" id="p4r2">6</span>
      </div>
  </div>
</div>
<button style="margin-top: 2em;" id="sort">SORT ALL</button>

霍尔格·威尔

不要为此使用jQuery。如今,该平台已经足够强大。

简短的介绍:

  • 得到所有.group_tables并调用sortByPoints()函数
  • 得到所有.teams并将nodeList变成一个Array。
  • parseInt() 点的内容,并按其对数组进行排序。
  • 对于现在产生的排序数组中的每个项目,将其附加到当前 .group_table

最后一步是这样的,因为当您添加一个已经在dom中的项目时,它会从其原始位置中删除...

sort.addEventListener("click", evt => {
  document.querySelectorAll(".group_table").forEach(item => {
    sortByPoints(item)
  })
})


function sortByPoints(element) {
  Array.from(element.querySelectorAll(".team")).sort((a, b) => {
    return parseInt(a.querySelector(".points").textContent) - parseInt(b.querySelector(".points").textContent)
  }).forEach(item => {
    element.appendChild(item)
  })
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div class="container">
  <div class="group_table">
    <div>
      <h1>FOO</h1>
    </div>
    <div>
      <span style="border-bottom:1px solid #000;">points</span>
    </div>

    <div class="team">
      <span>Cucumber</span>
      <span class="points" id="p1r1">6</span>
    </div>

    <div class="team">
      <span>Bacon</span>
      <span class="points" id="p2r1">3</span>
    </div>

    <div class="team">
      <span>Chicken</span>
      <span class="points" id="p3r1">0</span>
    </div>

    <div class="team">
      <span>Porridge</span>
      <span class="points" id="p4r1">9</span>
    </div>
  </div>

  <div class="group_table">
    <div>
      <h1>BAR</h1>
    </div>
    <div>
      <span style="border-bottom:1px solid #000;">points</span>
    </div>

    <div class="team">
      <span>Cucumber</span>
      <span class="points" id="p1r2">3</span>
    </div>

    <div class="team">
      <span>Bacon</span>
      <span class="points" id="p2r2">0</span>
    </div>

    <div class="team">
      <span>Chicken</span>
      <span class="points" id="p3r2">9</span>
    </div>

    <div class="team">
      <span>Porridge</span>
      <span class="points" id="p4r2">6</span>
    </div>
  </div>
</div>
<button style="margin-top: 2em;" id="sort">SORT ALL</button>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章