Javascript 选择第一个字母并将其置于内容组上方
我有一个类似这样的列表:Javascript 选择第一个字母并将其置于内容组上方,javascript,jquery,html,Javascript,Jquery,Html,我有一个类似这样的列表: <ul class="mylist"> <li>AAA</li> <li>AAA</li> <li>AAA</li> <li>BBB</li> <li>BBB</li> <li>CCC</li> </ul> AAA AAA AAA BBB BBB CCC
<ul class="mylist">
<li>AAA</li>
<li>AAA</li>
<li>AAA</li>
<li>BBB</li>
<li>BBB</li>
<li>CCC</li>
</ul>
- AAA
- AAA
- AAA
- BBB
- BBB
- CCC
我现在想在内容组上方添加内容的第一个字母
下面是一个结果的示例:
<ul class="mylist">
<li><strong>A</strong></li>
<li>AAA</li>
<li>AAA</li>
<li>AAA</li>
<li><strong>B</strong></li>
<li>BBB</li>
<li>BBB</li>
<li><strong>C</strong></li>
<li>CCC</li>
</ul>
- A
- AAA
- AAA
- AAA
- B
- BBB
- BBB
- C
- CCC
如何做到这一点?使用jQuery非常简单-请参阅代码注释以了解解释
// shorthand for on document load
$(function() {
// a variable to store our current first letter
var currentFirstLetter;
// for every child of mylist
$('.mylist').children().each(function() {
// take the first character of its content
var thisLetter = $(this)[0].innerHTML.substr(0,1).toLowerCase();
// if its different to our current first letter then add the required element
// and update our current first letter
if (thisLetter !== currentFirstLetter) {
$(this).before("<li><strong>" + thisLetter.toUpperCase() + "</strong></li>");
currentFirstLetter = thisLetter;
}
});
});
//文档加载时的简写
$(函数(){
//用于存储当前第一个字母的变量
第一个字母;
//为了我的每一个孩子
$('.mylist').children().each(function()){
//以其内容的第一个字符为例
var thisLetter=$(this)[0].innerHTML.substr(0,1).toLowerCase();
//如果与当前的第一个字母不同,则添加所需元素
//并更新我们当前的第一封信
如果(thisLetter!==currentFirstLetter){
$(this).before(“”+thisLetter.toUpperCase()+” ”);
currentFirstLetter=此字母;
}
});
});
请使用谷歌“如何在ul jquery中迭代li”,这将把您带到这里:然后您需要进行实现或尝试,并将其发布到这里。这是完全可行的,您的问题应该是“这不起作用”或“我如何使这个算法更快?”您正在寻找一个JS/JQ包装器。你可以按照@abc123的建议去做,并在网上查阅大量关于这个问题的资料。一旦理解了这个概念,就可以将代码放在插件或函数中,然后在需要包装的表上调用它。也就是说,如果您尝试了一些方法,但无法破解它,那么我们都可以在诊断该问题时发挥更大的作用谢谢,这很好,但它不区分大小写。因此,如果您要添加
aAA
,它将添加另一个a。您只需使用toLowerCase和toUpperCase方法操作字符串。。。这太完美了!非常感谢你!你救了我一天!:)