从Jquery中最低的数据属性顺序添加索引

从Jquery中最低的数据属性顺序添加索引,jquery,Jquery,我有以下代码,正在尝试按序号顺序为每个项目添加索引: <div class="item" data-id='1'>Option 1</div> <div class="item" data-id='19'>Option 19</div> <div class="item" data-id='5'>Option 5</div> <div class="item" data-id='39'>Option 39&l

我有以下代码,正在尝试按序号顺序为每个项目添加索引:

<div class="item" data-id='1'>Option 1</div>
<div class="item" data-id='19'>Option 19</div>
<div class="item" data-id='5'>Option 5</div>  
<div class="item" data-id='39'>Option 39</div>

$('.item').each(function (i) {
    $(this).attr('data-new-id', 'item-' + (i + 1));
});
选项1
选择19
备选案文5
选择39
$('.item')。每个(函数(i){
$(this.attr('data-new-id','item-'+(i+1));
});
这一结果如下:

<div class="item" data-id="1" data-new-id="item-1">Option 1</div>
<div class="item" data-id="19" data-new-id="item-2">Option 19</div>
<div class="item" data-id="5" data-new-id="item-3">Option 5</div>  
<div class="item" data-id="39" data-new-id="item-4">Option 39</div>  
选项1
选择19
备选案文5
选择39
理想输出为:

<div class="item" data-id="1" data-new-id="item-1">Option 1</div>
<div class="item" data-id="19" data-new-id="item-3">Option 19</div>
<div class="item" data-id="5" data-new-id="item-2">Option 5</div>  
<div class="item" data-id="39" data-new-id="item-4">Option 39</div>  
选项1
选择19
备选案文5
选择39
因此,顺序保持不变,但脚本会找到数据id并添加一个从1开始从最低到最高的新序列

在此处创建一个JSFIDLE:

正如Rory在评论中所说,您需要首先对
数据id
进行排序,然后为元素分配新的
数据
属性

见下文

var item=$(“.item”)
项目.排序(功能(a、b){
返回($(a).data('id'))>($(b).data('id'));
}).每项功能(i){
$(this.attr('data-new-id','item-'+(i+1));
});

选择1
选择19
备选案文5

选项39
正如Rory在评论中所说,您需要首先对
数据id
s进行排序,然后将新的
数据
属性分配给元素

见下文

var item=$(“.item”)
项目.排序(功能(a、b){
返回($(a).data('id'))>($(b).data('id'));
}).每项功能(i){
$(this.attr('data-new-id','item-'+(i+1));
});

选择1
选择19
备选案文5

选项39
要实现这一点,您需要首先按照元素的
数据id
属性对元素进行
排序()
然后执行
每个()
循环,这是一个很大的帮助。要实现这一点,您需要首先按照元素的
数据id
属性对元素进行
排序()
然后执行
每个()
Loop谢谢Rory,这是一个很大的帮助。谢谢你的帮助。太好了。谢谢你的帮助。太好了。谢谢