gpt4 book ai didi

javascript - 使用javascript将分层无序列表转换为选择列表

转载 作者:太空宇宙 更新时间:2023-11-04 15:22:26 25 4
gpt4 key购买 nike

我想实现类似于问题 How to convert unordered list into nicely styled dropdown using jquery? 的结果,但具有分层 ul 列表。我想转换这个 HTML:

<ul>
<li><a href="/">Home</a></li>
<li><a href="/about">About us</a>
<ul>
<li><a href="/about/staff">Staff</a></li>
<ul>
<li class="current-page"><a href="/about/staff/john-doe">John Doe</a></li>
<li><a href="/about/staff/jane-doe">Jane Doe</a></li>
</ul>
</ul>
</li>
<li><a href="/products">Products</a>
<ul>
<li><a href="/products/games">Games</a>
<ul>
<li><a href="/products/games/xbox">XBOX</a></li>
<li><a href="/products/games/ps3">PlayStation 3</a></li>
<li><a href="/products/games/ipad">iPad</a></li>
<li><a href="/products/games/iphone">iPhone</a></li>
</ul>
</li>
<li><a href="/products/hardware">Hardware</a>
<ul>
<li><a href="/products/hardware/controllers">Controllers</a></li>
<li><a href="/products/hardware/memory">Memory units</a></li>
</ul>
</li>
<li><a href="/products/upcoming">Upcoming</a></li>
</ul>
</li>
<li><a href="/contact">Contact us</a></li>
</ul>

对此:

<select>
<option value="/">Home</option>
<option value="/about">About us</option>
<option value="/about/staff">- Staff</option>
<option value="/about/staff/john-doe" selected>-- John Doe</option>
<option value="/about/staff/jane-doe">-- Jane Doe</option>
<option value="/products">Products</option>
<option value="/products/games">- Games</option>
<option value="/products/games/xbox">-- XBOX</option>
<option value="/products/games/ps3">-- PlayStation 3</option>
<option value="/products/games/ipad">-- iPad</option>
<option value="/products/games/iphone">-- iPhone</option>
<option value="/products/hardware">- Hardware</option>
<option value="/products/hardware/controllers">-- Controllers</option>
<option value="/products/hardware/memory">-- Memory</option>
<option value="/products/upcoming">- Upcoming</option>
<option value="/contact">Contact us</option>
</select>

li 上的类“current-page”应该将select 中相应的选项标记为selected。 jQuery 和 vanilla JavaScript 都可以。

最佳答案

这里有一些 jQuery 代码可以执行您想要的操作。因为我不知道你想要 <select> 在哪里附加,我只是将它直接附加到 <body> .还有一个问题 $('li')选择器过于贪婪(它会选择文档中的所有 <li> 元素),但考虑到关于 <ul> 的父元素的知识,它很容易修复您发布的元素。

(function($) { $(function() {
var $select = $('<select>')
.appendTo('body');

$('li').each(function() {
var $li = $(this),
$a = $li.find('> a'),
$p = $li.parents('li'),
prefix = new Array($p.length + 1).join('-');

var $option = $('<option>')
.text(prefix + ' ' + $a.text())
.val($a.attr('href'))
.appendTo($select);

if ($li.hasClass('current-page')) {
$option.attr('selected', 'selected');
}
});
});})(jQuery);

我也会考虑使用 <optgroup> 而不是 -前缀作为表示层次结构级别的一种方式。

关于javascript - 使用javascript将分层无序列表转换为选择列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7385509/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com