首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据文本对div进行Jquery排序

根据文本对div进行Jquery排序
EN

Stack Overflow用户
提问于 2017-11-04 21:26:21
回答 2查看 50关注 0票数 1

我想根据家长的文字重新排列。这是我的密码:

代码语言:javascript
复制
$('#duration').click(function() {
var  u1 = $('#planner-itinWidget-itinsAccord-0 div .otp-itinTripSummary #ucret').text();
var u2 = $('#planner-itinWidget-itinsAccord-1 div .otp-itinTripSummary #ucret').text();
var u3 = $('#planner-itinWidget-itinsAccord-2 div .otp-itinTripSummary #ucret').text();
var u4 = $('#planner-itinWidget-itinsAccord-3 div .otp-itinTripSummary #ucret').text();
var arrayUcret = [u1,u2,u3,u4];
arrayUcret.sort();
  });

如何根据排序数组订购我的div(#planner-itinWidget-itinsAccord 0,#planner-itinWidget-I 1,#planner-itinWidget-itinsAccord 2,#planner-itinWidget-I 3)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-04 21:54:17

排序之前,将每个文本与它所属的div元素配对(在子数组中),然后根据文本对这些对的数组进行排序。这样,div元素引用也将同时排序。

然后按照您所拥有的排序顺序,一个接一个地追加这些元素。这实际上会将这些元素移到适当的位置。

注意:我已经用#ucret代替了.ucret,因为.ucret不允许重复的id属性值。因此,将HTML更改为使用class="ucret"而不是id="ucret"

代码语言:javascript
复制
$('#duration').click(function() {
    var u1 = $('#planner-itinWidget-itinsAccord-0 div .otp-itinTripSummary .ucret').text();
    var u2 = $('#planner-itinWidget-itinsAccord-1 div .otp-itinTripSummary .ucret').text();
    var u3 = $('#planner-itinWidget-itinsAccord-2 div .otp-itinTripSummary .ucret').text();
    var u4 = $('#planner-itinWidget-itinsAccord-3 div .otp-itinTripSummary .ucret').text();
    [u1, u2, u3, u4]
        // Pair the DIV element with each text
        .map( (u, i) => [u, $('#planner-itinWidget-itinsAccord-' + i)] )
        // Sort by the text part    
        .sort( (a,b) => a[0].localeCompare(b[0]) )
        // Move each element relative to the previous one in the sort order
        .reduce( (a, b) => {
            a[1].after(b[1]);
            return b;
        });
});

代码语言:javascript
复制
$('#duration').click(function() {
    var u1 = $('#planner-itinWidget-itinsAccord-0 div .otp-itinTripSummary .ucret').text();
    var u2 = $('#planner-itinWidget-itinsAccord-1 div .otp-itinTripSummary .ucret').text();
    var u3 = $('#planner-itinWidget-itinsAccord-2 div .otp-itinTripSummary .ucret').text();
    var u4 = $('#planner-itinWidget-itinsAccord-3 div .otp-itinTripSummary .ucret').text();
    [u1, u2, u3, u4]
        // Pair the DIV element with each text
        .map( (u, i) => [u, $('#planner-itinWidget-itinsAccord-' + i)] )
        // Sort by the text part    
        .sort( (a,b) => a[0].localeCompare(b[0]) )
        // Move each element relative to the previous one in the sort order
        .reduce( (a, b) => {
            a[1].after(b[1]);
            return b;
        });
});
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="duration">Sort</button>
<div id="planner-itinWidget-itinsAccord-0" class="planner-itinWidget-itinsAccord">
    <div>
        <div class="otp-itinTripSummary">
            <div class="ucret">hello</div>
        </div>
    </div>
</div>
<div id="planner-itinWidget-itinsAccord-1" class="planner-itinWidget-itinsAccord">
    <div>
        <div class="otp-itinTripSummary">
            <div class="ucret">word</div>
        </div>
    </div>
</div>
<div id="planner-itinWidget-itinsAccord-2" class="planner-itinWidget-itinsAccord">
    <div>
        <div class="otp-itinTripSummary">
            <div class="ucret">foo</div>
        </div>
    </div>
</div>
<div id="planner-itinWidget-itinsAccord-3" class="planner-itinWidget-itinsAccord">
    <div>
        <div class="otp-itinTripSummary">
            <div class="ucret">bar</div>
        </div>
    </div>
</div>

票数 0
EN

Stack Overflow用户

发布于 2017-11-04 21:37:55

使用jQuery自定义排序功能。

然后为所有相关的div (如planner-itinWidget-itinsAccord,)设置一个公共类:

代码语言:javascript
复制
$('.planner-itinWidget-itinsAccord').sort(function (el1, el2) {
    return $(el1).text() > $(el2).text();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47115795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档