向后遍历有序列表,返回每个li文本
Traversing the Ordered List backwards returning each li text
如何遍历有序列表并返回文本,如果我有一个场景,用户可以单击像Cat 1-2这样的li元素,它将所有父li的文本返回到字符串或数组中。如果是一个数组,我可以反向排序,但最终我需要它是一个字符串。
的例子:
<ul>
<li>Cat 1
<ul>
<li>Cat 1-1
<ul>
<li>Cat 1-2</li>
</ul>
</li>
</ul>
</li>
<li>Cat 2
<ul>
<li>Cat 2-1
<ul>
<li>Cat 2-2</li>
</ul>
</li>
</ul>
</li>
</ul>
如果点击Cat 1-2,期望的结果将是:str = "Cat 1/Cat 1-1/Cat 1-2";
如果点击Cat 2-1,期望的结果将是:str = "Cat 2/Cat 2-1";
我想要的是这上面的复选框,我可以把所有的选择连接到一个字符串层次结构,像:str = "猫1/猫1 - 1/猫1 - 2 |猫2/猫2 - 1";
这里;我将展示一个简单的方法让你开始,然后你可以找到一个更好的方法(也许使用textContent)…
$('li').click(function(e){
var parents = $(this).add($(this).parents('li'))
.map(function(){
return $(this).clone().children().remove().end()
.text().replace(/'r|'n|^'s+|'s+$/g,'');
})
.toArray().join('/');
alert(parents);
e.stopPropagation();
});
我不知道这是否比Brad的方法更有效,但我更早开始研究这个方法,它一直困扰着我,直到我完成它。
<<p> jsFiddle例子/strong>var ary = [];
$('li').click(function (e) {
ary.push($.trim($(this).clone()
.children()
.remove()
.end()
.text()));
if ($(this).parents('ul').parent('li').length == 0) {
console.log(ary.reverse().join('/'));
ary = [];
}
});
相关文章:
- 节点导出返回一个空对象
- ES6构造函数返回基类的实例
- 监视函数从服务返回不起作用,但作用域函数起作用
- 控制台返回var不是't定义,但它是
- 从函数返回角度承诺
- Javascript返回值只在循环中返回一次
- 从控制器返回后Ajax启动事件激发
- CKFinder 3为所选文件返回错误的URL
- 如何在d3.js中返回路径的y坐标
- 如何从jquery函数返回变量
- Angular js-返回一个包含类似
- 使用JavaScript返回click-li项目的值,并用结果填充文本区域
- 如何使用 javascript 或 Jquery 在 LI nodeObject 下返回此跨度的 ID
- 返回多个 li 作为“幻灯片”
- 当移动到最后一个li时,返回到第一个li(使用Jquery滚动到下一个)
- 在uljavascript/jquery中返回点击的li类
- 无法使用jquery返回li-id
- 循环通过LI's在一个顺序中,然后返回另一个顺序,同时逐渐消失
- 返回jquery中单击的li的值
- 向后遍历有序列表,返回每个li文本