我必须使用 jquery 将用户在内容管理系统中输入的无序列表转换为引导菜单(导航栏)。
80% 除了一个我想不出一个好的解决方案的挑战——即一个使用选择器而不是字符串操作或正则表达式的挑战。毕竟,我们都知道我们从不使用正则表达式解析 html :)
因此,使用用户可以使用的有限的 UI 工具,他们生成一个列表,通常是一个像这样的两级嵌套列表
<ul>
<li>Blah1
<ul>
<li><a href='http://xxxx'>Blah1a</a></li>
<li><a href='http://yyyy'>Blah1b</a></li>
<li>Blah1c</li>
<li><a href='http://zzzz'>Blah1d</a></li>
</ul>
</li>
<li><a href='http://aaaa'>Blah2</a></li>
<li>Blah3
<ul>
<li><a href='http://xxxx'>Blah2a</a></li>
<li><a href='http://yyyy'>Blah2b</a></li>
</ul>
</li>
</ul>
等等......重要的是他们的一些列表项是链接,有些只是文本。
我需要选择 <li> 中尚未包含在 <a> 中的每个文本块,并将其包装在 <a href="#"> 中,以便将上述内容转换为:
<ul>
<li><a href='#'>Blah1</a>
<ul>
<li><a href='http://xxxx'>Blah1a</a></li>
<li><a href='http://yyyy'>Blah1b</a></li>
<li><a href='#'>Blah1c</a></li>
<li><a href='http://zzzz'>Blah1d</a></li>
</ul>
</li>
<li><a href='http://aaaa'>Blah2</a></li>
<li><a href='#'>Blah3</a>
<ul>
<li><a href='http://xxxx'>Blah2a</a></li>
<li><a href='http://yyyy'>Blah2b</a></li>
</ul>
</li>
</ul>
我敢肯定,这不应该那么难,但是玩了一个小时后,我一无所获。