使用javascript对复杂无序列表进行排序

使用javascript对复杂无序列表进行排序,javascript,jquery,html,sorting,Javascript,Jquery,Html,Sorting,我正在寻找一种使用标准javascript或jQuery对相当复杂的html无序列表进行排序的方法 请查看HTML,顺序需要按字母顺序排列,并基于“.keywordType span value”中的HTML,但需要构造顶级li的顺序(使用唯一的关键字\u xxx)。我刚刚从几十个列表项中粘贴了两个 <ul class="keywords"> <li id="keyword_185"> <div class="icon_keyword">

我正在寻找一种使用标准javascript或jQuery对相当复杂的html无序列表进行排序的方法

请查看HTML,顺序需要按字母顺序排列,并基于
“.keywordType span value”
中的HTML,但需要构造顶级li的顺序(使用唯一的关键字\u xxx)。我刚刚从几十个列表项中粘贴了两个

<ul class="keywords">
    <li id="keyword_185">
        <div class="icon_keyword"></div>
        <input type="hidden" class="keywordLabel" value="More opening hours">
        <div class="data-wrapper">
            <div class="keywordType">
                <span class="oh">Payment methods</span>
            </div>
            <div class="keywordValue">
                <span id="keyword_185" class="oh">Credit Card, PayPal</span>
            </div>
        </div>
        <a class="edit" title="Edit keywords"></a>
        <a class="delete" title="Delete keywords"></a>
    </li>
    <li id="keyword_192">
        <div class="icon_keyword"></div>
        <input type="hidden" class="keywordLabel" value="Monday to Friday: 8:30am to 6:30pm Saturday: 9pm to 6:30pm Sunday: 10 - 4pm">
        <div class="data-wrapper">
            <div class="keywordType">
                <span class="oh">Opening Hours</span>
            </div>
            <div class="keywordValue">
                <span id="keyword_192" class="oh">Monday to Friday: 8:30am to 6:30pm<br>Saturday: 9pm to 6:30pm<br>Sunday: 10 - 4pm</span>
            </div>
        </div>
        <a class="edit" title="Edit keywords"></a>
        <a class="delete" title="Delete keywords"></a>
    </li>
</ul>
  • 付款方式 信用卡,贝宝
  • 营业时间 周一至周五:上午8:30至下午6:30
    周六:晚上9点至下午6:30
    周日:晚上10点至4点

谢谢

看看这个,它完全符合您的要求

您可以查看元素列表(jQuery对象具有
Array
的所有方法,包括)

在比较函数中,只需比较列表项的文本内容。随后将根据单个字母在字母表中的位置(实际上是Unicode表)对其进行比较。例如,
k>a
true

最后,只需将项目重新附加到列表中

演示:

这有帮助吗

var arr;
$('.keyword span').each( function( i, el){
    arr[i] = $(el).text();
});
arr.sort();
我在这个问题页面上测试了它,下面的代码将相关问题的列表排列在右边

var arr;
$('.question-hyperlink').each( function( i, el){
    arr[i] = $(el).text();
});
arr.sort();

这可能更适合服务器端排序或jquery表/网格。也许jSort jquery插件可以做到这一点?你能发布你的预期结果吗?Wes-不幸的是,我对HTML几乎没有控制权!因为在我接手之前,它做了一点点。抱歉,如果不清楚James Hill,预期结果是使用选择器“.keywordType span”html值对
  • 元素进行重新排序,谢谢,这正是我想要的。我还将学习代码以更好地理解JS排序。这里的根本问题看起来像是过于复杂的html。我会研究一个更好的结构,这样类似的问题就不会不断出现。谢谢,非常简单的解决方案,我不需要它来做任何超出此范围的事情:-)
    var arr;
    $('.question-hyperlink').each( function( i, el){
        arr[i] = $(el).text();
    });
    arr.sort();