我将jQuery UI的sortable用于我的UL列表。每次用户对列表进行排序时,我都希望每个li元素将其“ position”属性更新为列表中的位置。

<ul>
<li position="1">a</li>
<li position="2">b</li>
<li position="3">c</li>
</ul>


因此,当用户将c替换为a时,排名也会更新。我尝试使用.each,但是javascript似乎并不遵循LI元素的显示顺序,而是遵循元素创建的顺序。

最佳答案

如另一个答案中所述,只需使用update即可:

$(function() {
    var $sortable = $('ul').sortable({
        update: function(event, ui) {
            var counter = 1;
            $('li', $sortable).each(function() {
                $(this).attr('position', counter);
                counter++;
            });
        }
    });
});


Example link

09-25 18:14
查看更多