首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向后遍历有序列表,返回每个li文本

向后遍历有序列表,返回每个li文本
EN

Stack Overflow用户
提问于 2013-06-08 04:01:40
回答 2查看 76关注 0票数 0

如果我有这样一个场景,用户可以单击一个像cat1-2这样的li元素,并且它将父li的所有文本返回到一个字符串或数组中,那么我如何遍历有序列表并返回文本呢?如果是数组,我可以反转排序,但最终我需要它是一个字符串。

示例:

代码语言:javascript
复制
<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 = "Cat 1/Cat 1-1/Cat 1-2|Cat 2/Cat 2-1";

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-08 04:16:17

在这里,我将展示一种糟糕的方法来启动你,然后你就可以找到更好的方法(也许使用textContent)……

代码语言:javascript
复制
$('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();
});
票数 3
EN

Stack Overflow用户

发布于 2013-06-08 05:07:25

我不知道这是否比Brad的方法更有效,但我很早就开始做这件事,它一直困扰着我,直到我完成它。

代码语言:javascript
复制
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 = [];
    }
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16992063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档