如何附加列表项<李>从无序列表<ul>其他四个未排序列表之间
How do I append list items <li> from an Unordered list <ul> between four other Unordered lists based upon their content
我目前有一个品牌名称列表,这些名称被动态拉入页面,需要根据其品牌名称在4个列表之间进行分割。例如,一列将包含任何以数字开头的内容。第二列将包含所有以字母A至H开头的品牌。第三列为I-P。第四列Q-Z。我目前正在尝试使用jquery中的.map()函数遍历列表,提取项目并附加到相应的列表中,但遇到了一些困难。任何帮助都将不胜感激!
(注意:不是实际的品牌名单…最终名单中将有大约50个品牌。)
这是我的html:
<div class="brand-directory-body">
<ul class="brand-directory-list" style="display:none;">
<li class="brand">37 Signals</li>
<li class="brand">Apple</li>
<li class="brand">BMG</li>
<li class="brand">Cartoon Network</li>
<li class="brand">Disney</li>
<li class="brand">ENews</li>
<li class="brand">Nike</li>
<li class="brand">Adidas</li>
<li class="brand">Frito</li>
<li class="brand">Coke</li>
<li class="brand">Adobe</li>
<li class="brand">Hostess</li>
<li class="brand">Dominoes Pizza</li>
<li class="brand">Honest Co</li>
<li class="brand">Z Brand</li>
</ul>
<div class="brand-directory-column">
<h3 class="column-title">#</h3>
<ul class="brand-directory-list-num"></ul>
</div>
<div class="brand-directory-column">
<h3 class="column-title">A-H</h3>
<ul class="brand-directory-list-ah"></ul>
</div>
<div class="brand-directory-column">
<h3 class="column-title">I-P</h3>
<ul class="brand-directory-list-ip"></ul>
</div>
<div class="brand-directory-column">
<h3 class="column-title">Q-Z</h3>
<ul class="brand-directory-list-qz"></ul>
</div>
var lists = {
numbers: [],
AH: [],
IP: [],
QZ: []
};
$('.brand').each(function () {
var letter = $.text(this).substr(0, 1);
if ( /'d/.test(letter) ) {
lists.numbers.push(this);
}
else if ( /[a-h]/i.test(letter) ) {
lists.AH.push(this);
}
else if ( /[i-p]/i.test(letter) ) {
lists.IP.push(this);
}
else if ( /[q-z]/i.test(letter) ) {
lists.QZ.push(this);
}
});
$('.brand-directory-list-num').append( lists.numbers );
$('.brand-directory-list-ah').append( lists.AH );
$('.brand-directory-list-ip').append( lists.IP );
$('.brand-directory-list-qz').append( lists.QZ );
小提琴在这儿:http://jsfiddle.net/q697n/
如果你想让代码有点DRYer,你可以把正则表达式存储在一个映射对象中:
var lists = {
numbers: [],
AH: [],
IP: [],
QZ: []
};
var map = {
numbers: /'d/,
AH: /[a-h]/i,
IP: /[i-p]/i,
QZ: /[q-z]/i
}
$('.brand').each(function () {
var el = this, letter = $.text(this).substr(0, 1);
$.each(map, function (key, regex) {
if ( regex.test(letter) ) {
lists[key].push(el);
return false;
}
});
});
$('.brand-directory-list-num').append( lists.numbers );
$('.brand-directory-list-ah').append( lists.AH );
$('.brand-directory-list-ip').append( lists.IP );
$('.brand-directory-list-qz').append( lists.QZ );
小提琴在这儿:http://jsfiddle.net/q697n/1/
相关文章:
- 使用下拉列表筛选列表(ul>li)
- 如何附加<ul><李>元素位于某个特定条件的父元素列表之间
- 如何发送分配列表<字符串>到JavaScript数组或可枚举对象
- 当我有<选择>下拉列表
- 如何转换列表<对象>转换为JsonResult
- 如何将逗号分隔的列表转换为<ul>列表
- 如何将Array转换为<ul><李>以字母为标题的字母列表
- 如何使用C#列表<对象>在Javascript中
- 我正试图动态地拉动<h3>元素,并将它们放在选择列表中
- jQuery访问列表视图->ul->李->span->img
- JavaScript将缩进文本转换为HTML列表重复顶层<李>'s为<ul>'s
- 将列表拆分为两列.列表没有't具有块,但是需要在最接近的<p>标签
- 未捕获的类型错误:对象#<节点列表>没有方法'addEventListener'
- 转换UL->li inot为同位素过滤菜单选择的列表
- ng重复不使用表<tr>但是与列表<李>
- 增加新<李>仅由有序列表创建的元素<ol>
- 动态生成<选择>未显示已排序列表中的第一个项目
- 调用.ajax方法得到未定义的json结果,返回json格式列表<字符串>
- 传递数组列表<ImageItems>从一个活动到另一个活动.图像项包含位图和字符串
- 转换C#列表<int[]>使用Razor将其转换为JavaScript