javascript - 更换
问题描述
我有以下标记:
<ul class="category-top-navigation__group category-top-navigation__group--level-2 " data-category="jj-brands">
<li data-group="accessories">Scarf</li>
<li data-group="bottoms">Shorts</li>
<li data-group="tops">Polo</li>
<li data-group="tops">T-shirt</li>
<li data-group="bottoms">Jeans</li>
<li data-group="accessories">Sunglasses</li>
</ul>
我制作了一些 JavaScript 逻辑,用于获取所有<li>
元素并将它们排序到一个二维数组中,该数组依赖于data-group
.
这意味着排序将包含以下列表:
"<li data-group='accessories'>Scarf</li>"
"<li data-group='accessories'>Sunglasses</li>"
"<li data-group='bottoms'>Shorts</li>"
"<li data-group='bottoms'>Jeans</li>"
"<li data-group='tops'>Polo</li>"
"<li data-group='tops'>T-shirt</li>"
现在我想做的是用新的排序列表替换<li>
里面已经存在的元素。<ul>
这就是我卡住的地方。
解决方案
使用从 -elements 创建的连接替换ul
s ,该连接使用属性对其元素进行排序,映射到元素中的字符串。innerHTML
Array
li
data-group
outerHTML
const ul = document.querySelector("ul");
ul.innerHTML = Array.from(ul.querySelectorAll("li"))
.sort( (a, b) => a.dataset.group.localeCompare(b.dataset.group) )
.map(v => v.outerHTML)
.join("");
<ul class="category-top-navigation__group category-top-navigation__group--level-2 " data-category="jj-brands">
<li data-group="accessories">Scarf</li>
<li data-group="bottoms">Shorts</li>
<li data-group="tops">Polo</li>
<li data-group="tops">T-shirt</li>
<li data-group="bottoms">Jeans</li>
<li data-group="accessories">Sunglasses</li>
</ul>
推荐阅读
- java - 在 Spring Data MongoDB 中创建复合索引的问题
- python-3.x - 满足条件时如何停止输出文本?
- powershell - Powershell 中的星舰符号
- python - 在 python jupytr notebook 中显示输出时,我得到了“绑定方法 NDFrame.head”
- javascript - React 的 useEffect 和 DOM 事件处理程序之间的执行顺序
- node.js - 拖放后如何更新记录
- python - 如何使用 for 循环比较 Python 中的两个列表?
- java - 二维数组转换(整数到字符串)
- python - 连续的 ipywidgets 按钮
- windows - 如何使 Windows 文件资源管理器在图块中从上到下而不是从左到右显示文件`