【问题标题】:jQuery iterate nested html listjQuery迭代嵌套的html列表
【发布时间】:2018-04-19 05:42:25
【问题描述】:

我有一个嵌套列表的 HTML 代码,让我很难用 jQuery 阅读!

我正在使用

$.get();

获取html然后使用

$(data).find(".thelist ul");

只获取看起来像的列表

<ul> 
    <li><a href="Draft-Documents-Page_294813708.html">Draft Page</a>
        <ul>
            <li><a href="Batch-Closing-Version-3.7_295567410.html">Batch Version 7</a></li>
        </ul>
    </li>

    <li><a href="Infection-Prevention-and-Control-System_491532.html">info Control System</a>
        <ul>
            <li><a href="About-info_261488773.html">About info</a></li>
        </ul>



        <ul>
            <li><a href="Applicati.html">Application</a>
                <ul>
                    <li><a href="Functionality.html">Functionality</a>

                        <ul>
                            <li>
                                <a href="Access.html">Access</a>
                            </li>
                        </ul>
                        <ul>
                            <li><a href="Login.html">Login</a>
                            </li>
                        </ul>
                        <ul>
                            <li><a href="info.html">info Desktop</a>
                            </li>
                        </ul>
                        <ul>
                            <li><a href="Search.html">Search</a>
                            </li>
                        </ul>
                        <ul>
                            <li><a href="info-Mobile.html">info Mobile</a>
                            </li>
                        </ul>

                    </li>
                </ul>
                </li>
        </ul>

            <ul>
                <li><a href="info.html">Support</a></li>
            </ul>
            <ul>
                <li><a href="Technical.html">Technical Manual</a>

                    <ul>
                        <li><a href="Formatting.html">Formatting</a>
                        </li>
                    </ul>
                    <ul>
                        <li><a href="Troubleshooting.html">Troubleshooting</a></li>
                    </ul>
                </li>
            </ul>
    </li>
</ul>

实际列表超过200项!最高可升7级!

我得到的是每个有子文本的项目都包括他们所有的文本!。

我需要获取每个文本和链接,然后附加或生成我自己的具有相同级别但不同 html 结构的列表

这是最好的方法吗?

我尝试过使用 $each() 进行迭代

【问题讨论】:

  • 您只需要链接及其标题吗?
  • 是的(还有 12 个)

标签: javascript jquery html loops


【解决方案1】:

试试这个,它会给所有标题提供链接。

$(function(){
    var links = [];
    $( "ul" ).find( "a" ).each(function(k,v){
        links.push({ title : $(v).text(), link : $(v).attr('href'), level : $(v).parents('ul').length });
    });
    console.log(links);
});

【讨论】:

  • 非常感谢!现在我只是找不到方法来跟踪保持每个项目的级别
  • @et3rnal,立即查看。
  • 太棒了!我用 v.nextSibling 来检查:D
【解决方案2】:

假设您上面显示的&lt;ul&gt;.thelist 块内的那个。

我认为如果你只使用$(data).find(".thelist ul li") 来获取&lt;ul&gt; 元素(和子元素)内的所有列表项,会更容易。

或者,如果您只想降低一层,您可以使用$(data).find(".thelist ul&gt;li")

并且,您可以使用以下方法来避免选择子节点:

$("#foo")
    .clone()    //clone the element
    .children() //select all the children
    .remove()   //remove all the children
    .end()  //again go back to selected element
    .text();

我从here 得到了这个移除儿童的想法。

我希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2011-10-14
    • 1970-01-01
    • 2016-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-08
    • 1970-01-01
    • 2014-08-19
    相关资源
    最近更新 更多