Javascript 根据列表项id更改列表项id';使用jQuery排序表选择当前位置

Javascript 根据列表项id更改列表项id';使用jQuery排序表选择当前位置,javascript,jquery,jquery-ui,Javascript,Jquery,Jquery Ui,我使用jQueryUISortable使菜单可排序 我试图将列表项的id设置为它们的当前位置或索引,以便以后可以在数据库中更新它们的位置值。但是,当我使用firebug检查html输出时,id不会更改为索引值 例如,如果我把li.news拖到li.home前面,它的id应该变为0,home的id应该变为1 HTML: 关于如何将id设置为当前位置,有什么想法吗?试试这个 $('.sortable > li').each(function( index, value ) { $(t

我使用jQueryUISortable使菜单可排序

我试图将列表项的id设置为它们的当前位置或索引,以便以后可以在数据库中更新它们的位置值。但是,当我使用firebug检查html输出时,id不会更改为索引值

例如,如果我把li.news拖到li.home前面,它的id应该变为0,home的id应该变为1

HTML:

关于如何将id设置为当前位置,有什么想法吗?

试试这个

$('.sortable > li').each(function( index, value ) {
     $(this).attr('id', 'item_'+index);
});

首先,除非假设HTML5基线,否则以数字开头的ID是无效的。行为将是不可预测的。如果必须使用这种方法,我会允许ID对应于某个适当的唯一自然键,然后使用jQuery的函数将信息附加到每一行

$('.sortable > li').each( function( i,v ) {
  $(this).data('sort-position',i);
});
要检索:

$('li#something').data('sort-position');

但更重要的是,我没有理由将状态信息移动到DOM中;它创建了一个糟糕的数据库,并暴露了状态表示与物理顺序不同步的风险。为什么不允许重新排序过程,并且当您想要更新后端数据库时,直接使用每个元素的索引?

这是有道理的,我想我是把事情复杂化了,而我可以直接使用索引。谢谢你的提示。
$('.sortable > li').each( function( i,v ) {
  $(this).data('sort-position',i);
});
$('li#something').data('sort-position');