在 jQuery 中订购 <UL>/<OL> 的最简单方法是什么?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/304396/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-26 08:55:11  来源:igfitidea点击:

What is the easiest way to order a <UL>/<OL> in jQuery?

jquerysorting

提问by Eric Schoonover

I'm looking for some sample code that will sort the list items in an HTML list by alphabetical order. Can anyone help?

我正在寻找一些示例代码,可以按字母顺序对 HTML 列表中的列表项进行排序。任何人都可以帮忙吗?

Here is a sample list for people to work with:

以下是供人们合作的示例列表:

<ul class="alphaList">
    <li>apples</li>
    <li>cats</li>
    <li>bears</li>
</ul>

回答by Chatu

var items = $('.alphaList > li').get();
items.sort(function(a,b){
  var keyA = $(a).text();
  var keyB = $(b).text();

  if (keyA < keyB) return -1;
  if (keyA > keyB) return 1;
  return 0;
});
var ul = $('.alphaList');
$.each(items, function(i, li){
  ul.append(li); /* This removes li from the old spot and moves it */
});

回答by Ergec

For future googlers, I've found this plugin very useful. It has option to define character order for non-latin languages.

对于未来的 googlers,我发现这个插件非常有用。它可以选择为非拉丁语言定义字符顺序。

Older versions (jQuery dependent)

旧版本(依赖于 jQuery)

$('.submenu > li').tsort({
    charOrder: 'abc?defg?h?ijklmno?prs?tuüvyz'
});

For English only characters, no option is needed to define

对于只有英文的字符,不需要任何选项来定义

$('.submenu > li').tsort();

Current version (jQuery independent) (29 March 2016)

当前版本(独立于 jQuery)(2016 年 3 月 29 日)

Current version of tinysort is now independent from jQuery. Pure JavaScript. I updated jsfiddle for new version usage.

tinysort 的当前版本现在独立于 jQuery。纯 JavaScript。我更新了 jsfiddle 以使用新版本。

tinysort('.submenu > li', {
    charOrder: 'abc?defg?h?ijklmno?prs?tuüvyz'
});

Demohttp://jsfiddle.net/ergec/EkScy/

演示http://jsfiddle.net/ergec/EkScy/

Websitehttp://tinysort.sjeiti.com/

网站http://tinysort.sjeiti.com/

回答by berniecc

Try this:

尝试这个:

var elems = $('.alphalist li').detach().sort(function (a, b) {
  return ($(a).text() < $(b).text() ? -1 
        : $(a).text() > $(b).text() ? 1 : 0);
}); 
$('.alphalist').append(elems);