【发布时间】:2020-07-17 21:38:49
【问题描述】:
HTML 代码
<Select id="alphalist">
<option value="a">A</option>
<option value="b">B</option>
<option value="c">C</option>
</Select>
<div id="a" class="lists" style="display">
<ul id="alist">
<li>Axe</li>
<li>Arc</li>
<li>Apple</li>
</ul>
</div>
<div id="b" class="lists" style="display:none">
<ul id="blist">
<li>Bat</li>
<li>Boat</li>
<li>Bee</li>
</ul>
</div>
<div id="c" class="lists" style="display:none">
<ul id="clist">
<li>Cat</li>
<li>Coat</li>
<li>Clock</li>
</ul>
</div>
脚本代码
$(function()
{
$('#alphalist').change(function(){
$('.lists').hide();
$('#' + $(this).val()).show();
});
});
在这里,我创建了 3 个列表和一个带有选项 A、B 和 C 的下拉菜单。 默认情况下,选项 A 被选中,并且仅显示第一个列表。单击选项 B 的方式相同,仅显示第二个列表,选择选项 C 时仅显示第三个列表。 现在我需要按字母顺序对每个列表进行排序,并显示与所选选项对应的排序列表。
排序的脚本代码是:
var mylist = $('#alist');
var listitems = mylist.children('li').get();
listitems.sort(function(a, b) {
return $(a).text().toUpperCase().localeCompare($(b).text().toUpperCase());
})
$.each(listitems, function(idx, itm) { mylist.append(itm); });
上面的代码只对第一个列表进行排序。为了对第二个列表进行排序,我们需要通过将 $('#alist) 替换为 $('#blist) 来再次编写上述代码。因此,如果我们有 20 多个列表,我们如何修改上面的代码,以便我们可以对所有可用列表进行排序。如果类名在所有列表之间是通用的,那么如何进行排序?请帮帮我。
【问题讨论】:
-
为什么不在页面创建时对其进行排序,而不是在显示时对其进行排序。
-
我最近在一个歌词和和弦网站上工作,其中歌曲名称必须添加到列表中。所以把一个新歌名放进一个大名单是很困难的。
-
这是服务器端脚本语言和数据库真正有用的地方。您可以按照您喜欢的任何顺序将歌曲存储在数据库中,并让查询以正确的顺序放置它们,或者在从数据库中提取它们后对其进行排序。如果您自己编写 HTML,我提供的答案会有所帮助。
标签: html jquery sorting html-lists unordered