javascript - 在 jQuery 中从最高到最低的每个元素中添加数据属性

标签 javascript jquery

我有这个代码

<ul>
    <li class="test" data-id="3">hi</li>
    <li class="test" data-id="5">hey</li>
    <li class="test" data-id="1">hello</li>
    <li class="test" data-id="17">Okay</li>
</ul>

需要在每个元素中按从高到低的顺序添加data-order属性,像这样

<ul>
    <li class="test" data-order="3" data-id="3">hi</li>
    <li class="test" data-order="2" data-id="5">hey</li>
    <li class="test" data-order="4" data-id="1">hello</li>
    <li class="test" data-order="1" data-id="17">Okay</li>
</ul>

因此,值最高的将被添加data-order="1",其余的方法相同。

最佳答案

以下代码片段演示了一个选项。更改 text 只是为了演示。

$(() => {
  $('li')
    .toArray()
    .sort((a,b) => $(b).data('id') - $(a).data('id'))
    .map((e,i) => $(e).data('order', i+1).text(i+1))
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<ul>
    <li class="test" data-id="3">hi</li>
    <li class="test" data-id="5">hey</li>
    <li class="test" data-id="1">hello</li>
    <li class="test" data-id="17">Okay</li>
</ul>

关于javascript - 在 jQuery 中从最高到最低的每个元素中添加数据属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58688489/

相关文章:

javascript - Jquery add class if a corresponding element hasClass 'active'(试图简化我的代码)

javascript - 如何规范化多个选项卡的 ajax 调用?

jquery - 使用 Jquery 获取所选值

javascript - 使 HTML 页面的一部分消失

javascript - 涉及 post json 调用的同步函数调用,其中一个函数应该在另一个函数成功后成功

javascript - 我将如何根据浏览器的大小取消此脚本?

javascript - 在 Angular2 中,检测组件滚动的最简单方法是什么

JavaScript 点击函数表格单元格仅应用于第一行

javascript - 覆盖这个类的字体大小 .MuiTypography-body1

php - 图像上传到mysql数据库不起作用