使用jquery根据li元素排序ul列表?

Onu*_*ece 3 html sorting jquery list

我正在使用<ul>元素创建一个水平列表,但我想要做的是根据<li>元素按字母顺序放置每个<ul>元素.例如

<ul class="list">
    <li>Name</li>
    <li>Surname</li>
    <li>Unit</li>
    <li>City</li>
</ul>
<ul class="list">
    <li>John</li>
    <li>Boe</li>
    <li>B.A.</li>
    <li>NY</li>
</ul>
<ul class="list">
    <li>Jane</li>
    <li>Doe</li>
    <li>M.A.</li>
    <li>CA</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

并根据姓氏字段将它们整理好.有没有办法用jquery做到这一点?

提前致谢

//编辑//

我正在使用的代码是这样的

$.ajax({
    type: 'GET',
    url: 'list.php',
    data: 'id='+id,
    dataType: 'xml',
    success: function(data) {
        var xml;
        if (typeof data == "string") {
            xml = new ActiveXObject("Microsoft.XMLDOM");
            xml.async = false;
            xml.loadXML(data);
        } else {
            xml = data;
        }

        $(xml).find('item').each(function(){
            var id = $(this).find("id").text();
            var name = $(this).find("name").text();
            var surname = $(this).find("surname").text();
            var units = $(this).find("units").text();
            var city = $(this).find("city").text();
            $("#listContainer").append('<ul class="list" id="'+id+'"><li style="width:30px;">'+name+'</li><li style="width:100px;">'+surname+'</li><li style="width:100px;">'+units+'</li><li style="width:100px;">'+city+'</li></ul>');
        }); //close each(   
    }
}); 
Run Code Online (Sandbox Code Playgroud)

Rok*_*jan 5

工作演示

$('.grid ul:gt(0)').each(function() {
    var txt1 = $(this).children('li:eq(1)').text();
    $(this).data('name', txt1);
});

var items = $('.grid ul');
items.sort(function(a, b) {
    var chA = $(a).data('name');
    var chB = $(b).data('name');
    if (chA < chB) return -1;
    if (chA > chB) return 1;
    return 0;
});
var grid = $('.grid');
$(grid).append(items);
Run Code Online (Sandbox Code Playgroud)

和HTML

<div class="grid">
    <ul class="list">
        <li>Name</li>
        <li>Surname</li>
        <li>Unit</li>
        <li>City</li>
    </ul>
    <ul class="list">
        <li>John</li>
        <li>Boe</li>
        <li>B.A.</li>
        <li>NY</li>
    </ul>
    <ul class="list">
        <li>Jane</li>
        <li>Doe</li>
        <li>M.A.</li>
        <li>CA</li>
    </ul>
    <ul class="list">
        <li>Lin</li>
        <li>Zyan</li>
        <li>M.A.</li>
        <li>OR</li>
    </ul>
    <ul class="list">
        <li>Matt</li>
        <li>Albright</li>
        <li>M.A.</li>
        <li>CA</li>
    </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

将导致:

在此输入图像描述

工作原理:
我们在所需内容中查找文本,并将此文本li :eq()
设置为每个UL元素的jQuery .data().
我们只是ul按检索的.data()文本排序 - 按字母顺序排列!

快乐的编码!